From: Mark Dickinson Date: Thu, 18 Oct 2012 18:21:43 +0000 (+0100) Subject: Issue #16277: in PyLong_FromVoidPtr, add missing branch for sizeof(void*) <= sizeof... X-Git-Tag: v3.3.1rc1~780^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=91044799f7c829404bff2191941f58c8ecbce897;p=python Issue #16277: in PyLong_FromVoidPtr, add missing branch for sizeof(void*) <= sizeof(long). --- diff --git a/Objects/longobject.c b/Objects/longobject.c index b9a0d8543a..3a675c4331 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -926,6 +926,13 @@ _PyLong_AsByteArray(PyLongObject* v, PyObject * 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 # error "PyLong_FromVoidPtr: sizeof(void*) > sizeof(long), but no long long" #endif @@ -936,6 +943,7 @@ PyLong_FromVoidPtr(void *p) if (!p) return PyLong_FromLong(0); return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)(Py_uintptr_t)p); +#endif /* SIZEOF_VOID_P <= SIZEOF_LONG */ }