Issue #16277: in PyLong_FromVoidPtr, add missing branch for sizeof(void*) <= sizeof(long).

This commit is contained in:
Mark Dickinson 2012-10-18 19:21:43 +01:00
parent 5bf7f1f6e3
commit 91044799f7
1 changed files with 8 additions and 0 deletions

View File

@ -926,6 +926,13 @@ _PyLong_AsByteArray(PyLongObject* v,
PyObject * PyObject *
PyLong_FromVoidPtr(void *p) PyLong_FromVoidPtr(void *p)
{ {
#if SIZEOF_VOID_P <= SIZEOF_LONG
/* special-case null pointer */
if (!p)
return PyLong_FromLong(0);
return PyLong_FromUnsignedLong((unsigned long)(Py_uintptr_t)p);
#else
#ifndef HAVE_LONG_LONG #ifndef HAVE_LONG_LONG
# error "PyLong_FromVoidPtr: sizeof(void*) > sizeof(long), but no long long" # error "PyLong_FromVoidPtr: sizeof(void*) > sizeof(long), but no long long"
#endif #endif
@ -936,6 +943,7 @@ PyLong_FromVoidPtr(void *p)
if (!p) if (!p)
return PyLong_FromLong(0); return PyLong_FromLong(0);
return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)(Py_uintptr_t)p); return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)(Py_uintptr_t)p);
#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */
} }