]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
PyLong_{As, From}VoidPtr: cleanup, replacing assumptions in comments with
authorTim Peters <tim.peters@gmail.com>
Sat, 16 Jun 2001 08:48:40 +0000 (08:48 +0000)
committerTim Peters <tim.peters@gmail.com>
Sat, 16 Jun 2001 08:48:40 +0000 (08:48 +0000)
#if/#error constructs.

Objects/longobject.c

index be9430ad0739a3af647d20a0b5d14398d8de4fbb..048b8e56fc8a1bbb15a08703e3208adfb8c9c20c 100644 (file)
@@ -508,18 +508,22 @@ PyLong_AsDouble(PyObject *vv)
 PyObject *
 PyLong_FromVoidPtr(void *p)
 {
-#if SIZEOF_VOID_P == SIZEOF_LONG
+#if SIZEOF_VOID_P <= SIZEOF_LONG
        return PyInt_FromLong((long)p);
 #else
+
+#ifndef HAVE_LONG_LONG
+#   error "PyLong_FromVoidPtr: sizeof(void*) > sizeof(long), but no long long"
+#endif
+#if SIZEOF_LONG_LONG < SIZEOF_VOID_P
+#   error "PyLong_FromVoidPtr: sizeof(LONG_LONG) < sizeof(void*)"
+#endif
        /* optimize null pointers */
-       if ( p == NULL )
+       if (p == NULL)
                return PyInt_FromLong(0);
-
-       /* we can assume that HAVE_LONG_LONG is true. if not, then the
-          configuration process should have bailed (having big pointers
-          without long longs seems non-sensical) */
        return PyLong_FromLongLong((LONG_LONG)p);
-#endif /* SIZEOF_VOID_P == SIZEOF_LONG */
+
+#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
 }
 
 /* Get a C pointer from a long object (or an int object in some cases) */
@@ -531,25 +535,29 @@ PyLong_AsVoidPtr(PyObject *vv)
           then the PyLong_AsLong*() functions will raise the exception:
           PyExc_SystemError, "bad argument to internal function"
        */
-
-#if SIZEOF_VOID_P == SIZEOF_LONG
+#if SIZEOF_VOID_P <= SIZEOF_LONG
        long x;
 
-       if ( PyInt_Check(vv) )
+       if (PyInt_Check(vv))
                x = PyInt_AS_LONG(vv);
        else
                x = PyLong_AsLong(vv);
 #else
-       /* we can assume that HAVE_LONG_LONG is true. if not, then the
-          configuration process should have bailed (having big pointers
-          without long longs seems non-sensical) */
+
+#ifndef HAVE_LONG_LONG
+#   error "PyLong_AsVoidPtr: sizeof(void*) > sizeof(long), but no long long"
+#endif
+#if SIZEOF_LONG_LONG < SIZEOF_VOID_P
+#   error "PyLong_AsVoidPtr: sizeof(LONG_LONG) < sizeof(void*)"
+#endif
        LONG_LONG x;
 
-       if ( PyInt_Check(vv) )
+       if (PyInt_Check(vv))
                x = PyInt_AS_LONG(vv);
        else
                x = PyLong_AsLongLong(vv);
-#endif /* SIZEOF_VOID_P == SIZEOF_LONG */
+
+#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
 
        if (x == -1 && PyErr_Occurred())
                return NULL;