]> granicus.if.org Git - python/commitdiff
Issue 2440: remove the guard around the handling of case 'n' in getargs.c's convertsi...
authorTrent Nelson <trent.nelson@snakebite.org>
Tue, 22 Apr 2008 19:02:40 +0000 (19:02 +0000)
committerTrent Nelson <trent.nelson@snakebite.org>
Tue, 22 Apr 2008 19:02:40 +0000 (19:02 +0000)
Lib/test/test_getargs2.py
Python/getargs.c

index 19183867f9da5bed081f467b3e3668cddd9c810b..69791e8d7d03a5d0cd7057bca92bf1a335102360 100644 (file)
@@ -187,8 +187,8 @@ class Signed_TestCase(unittest.TestCase):
         # n returns 'Py_ssize_t', and does range checking
         # (PY_SSIZE_T_MIN ... PY_SSIZE_T_MAX)
         self.assertRaises(TypeError, getargs_n, 3.14)
-        self.failUnlessEqual(99, getargs_n(Long()))
-        self.failUnlessEqual(99, getargs_n(Int()))
+        self.assertRaises(TypeError, getargs_n, Long())
+        self.assertRaises(TypeError, getargs_n, Int())
 
         self.assertRaises(OverflowError, getargs_n, PY_SSIZE_T_MIN-1)
         self.failUnlessEqual(PY_SSIZE_T_MIN, getargs_n(PY_SSIZE_T_MIN))
index 1370e098adcd44908f55a70916e448998b5a2827..6a50ef672ce1622d841569bdabb1a0cb60e5fe1f 100644 (file)
@@ -663,7 +663,6 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
        }
 
        case 'n': /* Py_ssize_t */
-#if SIZEOF_SIZE_T != SIZEOF_LONG
        {
                PyObject *iobj;
                Py_ssize_t *p = va_arg(*p_va, Py_ssize_t *);
@@ -672,14 +671,12 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
                        return converterr("integer<n>", arg, msgbuf, bufsize);
                iobj = PyNumber_Index(arg);
                if (iobj != NULL)
-                       ival = PyLong_AsSsize_t(arg);
+                       ival = PyLong_AsSsize_t(iobj);
                if (ival == -1 && PyErr_Occurred())
                        return converterr("integer<n>", arg, msgbuf, bufsize);
                *p = ival;
                break;
        }
-#endif
-       /* Fall through from 'n' to 'l' if Py_ssize_t is int */
        case 'l': {/* long int */
                long *p = va_arg(*p_va, long *);
                long ival;