]> granicus.if.org Git - python/commitdiff
Fix
authorMichael W. Hudson <mwh@python.net>
Sat, 7 Aug 2004 17:57:16 +0000 (17:57 +0000)
committerMichael W. Hudson <mwh@python.net>
Sat, 7 Aug 2004 17:57:16 +0000 (17:57 +0000)
[ 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...)

Python/getargs.c

index cd7633c410137e7247bed7ea30b2a9e4fa1b8c1b..48f9dc481d0a9a5018d1fbe61ab821882edf26b5 100644 (file)
@@ -472,7 +472,7 @@ convertsimple(PyObject *arg, char **p_format, va_list *p_va, char *msgbuf,
                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 @@ convertsimple(PyObject *arg, char **p_format, va_list *p_va, char *msgbuf,
                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 @@ convertsimple(PyObject *arg, char **p_format, va_list *p_va, char *msgbuf,
                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 @@ convertsimple(PyObject *arg, char **p_format, va_list *p_va, char *msgbuf,
                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 @@ convertsimple(PyObject *arg, char **p_format, va_list *p_va, char *msgbuf,
                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 @@ convertsimple(PyObject *arg, char **p_format, va_list *p_va, char *msgbuf,
                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 @@ convertsimple(PyObject *arg, char **p_format, va_list *p_va, char *msgbuf,
                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 @@ convertsimple(PyObject *arg, char **p_format, va_list *p_va, char *msgbuf,
        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))