diff Python/getargs.c @ 33013:8ca8febc0a0d legacy-trunk

Fix [ 991812 ] PyArg_ParseTuple can miss errors with warnings as exceptions as suggested in the report. This is definitely a 2.3 candidate (as are most of the checkins I've made in the last month...)
author Michael W. Hudson <mwh@python.net>
date Sat, 07 Aug 2004 17:57:16 +0000
parents cc1f74d19fcb
children d9927a65f5f9
line wrap: on
line diff
--- a/Python/getargs.c	Sat Aug 07 17:53:05 2004 +0000
+++ b/Python/getargs.c	Sat Aug 07 17:57:16 2004 +0000
@@ -472,7 +472,7 @@
 		char *p = va_arg(*p_va, char *);
 		long ival;
 		if (float_argument_error(arg))
-			return NULL;
+			return converterr("integer<b>", arg, msgbuf, bufsize);
 		ival = PyInt_AsLong(arg);
 		if (ival == -1 && PyErr_Occurred())
 			return converterr("integer<b>", arg, msgbuf, bufsize);
@@ -496,7 +496,7 @@
 		char *p = va_arg(*p_va, char *);
 		long ival;
 		if (float_argument_error(arg))
-			return NULL;
+			return converterr("integer<B>", arg, msgbuf, bufsize);
 		ival = PyInt_AsUnsignedLongMask(arg);
 		if (ival == -1 && PyErr_Occurred())
 			return converterr("integer<B>", arg, msgbuf, bufsize);
@@ -509,7 +509,7 @@
 		short *p = va_arg(*p_va, short *);
 		long ival;
 		if (float_argument_error(arg))
-			return NULL;
+			return converterr("integer<h>", arg, msgbuf, bufsize);
 		ival = PyInt_AsLong(arg);
 		if (ival == -1 && PyErr_Occurred())
 			return converterr("integer<h>", arg, msgbuf, bufsize);
@@ -533,7 +533,7 @@
 		unsigned short *p = va_arg(*p_va, unsigned short *);
 		long ival;
 		if (float_argument_error(arg))
-			return NULL;
+			return converterr("integer<H>", arg, msgbuf, bufsize);
 		ival = PyInt_AsUnsignedLongMask(arg);
 		if (ival == -1 && PyErr_Occurred())
 			return converterr("integer<H>", arg, msgbuf, bufsize);
@@ -546,7 +546,7 @@
 		int *p = va_arg(*p_va, int *);
 		long ival;
 		if (float_argument_error(arg))
-			return NULL;
+			return converterr("integer<i>", arg, msgbuf, bufsize);
 		ival = PyInt_AsLong(arg);
 		if (ival == -1 && PyErr_Occurred())
 			return converterr("integer<i>", arg, msgbuf, bufsize);
@@ -570,7 +570,7 @@
 		unsigned int *p = va_arg(*p_va, unsigned int *);
 		unsigned int ival;
 		if (float_argument_error(arg))
-			return NULL;
+			return converterr("integer<I>", arg, msgbuf, bufsize);
 		ival = PyInt_AsUnsignedLongMask(arg);
 		if (ival == -1 && PyErr_Occurred())
 			return converterr("integer<I>", arg, msgbuf, bufsize);
@@ -583,7 +583,7 @@
 		long *p = va_arg(*p_va, long *);
 		long ival;
 		if (float_argument_error(arg))
-			return NULL;
+			return converterr("integer<l>", arg, msgbuf, bufsize);
 		ival = PyInt_AsLong(arg);
 		if (ival == -1 && PyErr_Occurred())
 			return converterr("integer<l>", arg, msgbuf, bufsize);
@@ -620,8 +620,6 @@
 	case 'K': { /* long long sized bitfield */
 		unsigned PY_LONG_LONG *p = va_arg(*p_va, unsigned PY_LONG_LONG *);
 		unsigned PY_LONG_LONG ival;
-		if (float_argument_error(arg))
-			return NULL;
 		if (PyInt_Check(arg))
 			ival = PyInt_AsUnsignedLongMask(arg);
 		else if (PyLong_Check(arg))