*q = getstringsize(arg);
format++;
}
+ else if (strlen(*p) != getstringsize(arg)) {
+ err_setstr(ValueError, "embedded '\\0' in string arg");
+ return 0;
+ }
break;
}
*q = getstringsize(arg);
format++;
}
+ else if (*p != NULL && strlen(*p) != getstringsize(arg)) {
+ err_setstr(ValueError, "embedded '\\0' in string arg");
+ return 0;
+ }
break;
}
va_end(va);
if (!ok) {
char buf[256];
- sprintf(buf, "bad argument list (format '%s')", format);
- err_setstr(TypeError, buf);
+ if (!err_occurred()) {
+ sprintf(buf, "bad argument list (format '%s')",
+ format);
+ err_setstr(TypeError, buf);
+ }
}
return ok;
}