don't overwrite error already set (e.g. from O&)
diff --git a/Python/getargs.c b/Python/getargs.c
index 68bfd0e..cd3ff6d 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -259,6 +259,8 @@
 	int i;
 	char *p = buf;
 
+	if (err_occurred())
+		return;
 	if (iarg == 0 && message == NULL)
 		message = msg;
 	else if (message == NULL) {
@@ -583,7 +585,7 @@
 				void *addr = va_arg(*p_va, void *);
 				format++;
 				if (! (*convert)(arg, addr))
-					return "";
+					return "(unspecified)";
 			}
 			else {
 				p = va_arg(*p_va, object **);