PR gdb/10583:
authorTom Tromey <tromey@redhat.com>
Tue, 22 Sep 2009 21:14:58 +0000 (21:14 +0000)
committerTom Tromey <tromey@redhat.com>
Tue, 22 Sep 2009 21:14:58 +0000 (21:14 +0000)
* python/py-value.c (valpy_int): Use PyLong_FromLongLong.
(valpy_long): Likewise.

gdb/ChangeLog
gdb/python/py-value.c

index 51cee9a078d754cd821980fcbf5f08ab72f5b503..4b443ab3aae07af78f99e41029a415fedfaafa20 100644 (file)
@@ -1,3 +1,9 @@
+2009-09-22  Tom Tromey  <tromey@redhat.com>
+
+       PR gdb/10583:
+       * python/py-value.c (valpy_int): Use PyLong_FromLongLong.
+       (valpy_long): Likewise.
+
 2009-09-22  Tom Tromey  <tromey@redhat.com>
 
        PR python/10680:
index 714aa1180055c8b5d324e9a8c6fa17c5eb77ae13..58bcee3217fe254360575b2bbaabb5535ff5beba 100644 (file)
@@ -784,6 +784,13 @@ valpy_int (PyObject *self)
     }
   GDB_PY_HANDLE_EXCEPTION (except);
 
+#ifdef HAVE_LONG_LONG          /* Defined by Python.  */
+  /* If we have 'long long', and the value overflows a 'long', use a
+     Python Long; otherwise use a Python Int.  */
+  if (sizeof (l) > sizeof (long) && (l > PyInt_GetMax ()
+                                    || l < (- (LONGEST) PyInt_GetMax ()) - 1))
+    return PyLong_FromLongLong (l);
+#endif
   return PyInt_FromLong (l);
 }
 
@@ -808,7 +815,11 @@ valpy_long (PyObject *self)
     }
   GDB_PY_HANDLE_EXCEPTION (except);
 
+#ifdef HAVE_LONG_LONG          /* Defined by Python.  */
+  return PyLong_FromLongLong (l);
+#else
   return PyLong_FromLong (l);
+#endif
 }
 
 /* Implements conversion to float.  */