From 48e3fd240fc6338fbcbbc9c1c8a7d118faca924a Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Thu, 2 Apr 2009 18:39:37 +0000 Subject: [PATCH] sys.long_info attributes should be ints, not longs --- Lib/test/test_sys.py | 8 +++++--- Objects/longobject.c | 6 ++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index afeaf251b1c..3493fd10e59 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -340,6 +340,8 @@ class SysModuleTest(unittest.TestCase): self.assertEqual(len(sys.long_info), 2) self.assert_(sys.long_info.bits_per_digit % 5 == 0) self.assert_(sys.long_info.sizeof_digit >= 1) + self.assertEqual(type(sys.long_info.bits_per_digit), int) + self.assertEqual(type(sys.long_info.sizeof_digit), int) self.assert_(isinstance(sys.hexversion, int)) self.assert_(isinstance(sys.maxint, int)) if test.test_support.have_unicode: @@ -606,9 +608,9 @@ class SizeofTest(unittest.TestCase): check(1L, size(vh) + self.longdigit) check(-1L, size(vh) + self.longdigit) PyLong_BASE = 2**sys.long_info.bits_per_digit - check(PyLong_BASE, size(vh) + 2*self.longdigit) - check(PyLong_BASE**2-1, size(vh) + 2*self.longdigit) - check(PyLong_BASE**2, size(vh) + 3*self.longdigit) + check(long(PyLong_BASE), size(vh) + 2*self.longdigit) + check(long(PyLong_BASE**2-1), size(vh) + 2*self.longdigit) + check(long(PyLong_BASE**2), size(vh) + 3*self.longdigit) # module check(unittest, size(h + 'P')) # None diff --git a/Objects/longobject.c b/Objects/longobject.c index c172b0f9c3e..dd22ce03fbb 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -3736,8 +3736,10 @@ PyLong_GetInfo(void) long_info = PyStructSequence_New(&Long_InfoType); if (long_info == NULL) return NULL; - PyStructSequence_SET_ITEM(long_info, field++, PyLong_FromLong(PyLong_SHIFT)); - PyStructSequence_SET_ITEM(long_info, field++, PyLong_FromLong(sizeof(digit))); + PyStructSequence_SET_ITEM(long_info, field++, + PyInt_FromLong(PyLong_SHIFT)); + PyStructSequence_SET_ITEM(long_info, field++, + PyInt_FromLong(sizeof(digit))); if (PyErr_Occurred()) { Py_CLEAR(long_info); return NULL;