diff options
author | Mark Dickinson <mdickinson@enthought.com> | 2012-10-18 18:53:45 (GMT) |
---|---|---|
committer | Mark Dickinson <mdickinson@enthought.com> | 2012-10-18 18:53:45 (GMT) |
commit | 5cb65917e127effb45cd790decc05d82836af284 (patch) | |
tree | 89e9cd8bf31faecf24b0d8e7cd933dbfc77dd4ea /Objects/longobject.c | |
parent | 56d279fe35e7d3df988761c8407359399574356c (diff) | |
parent | 44362a88ad8d541c46de0e149975d6a9805b981e (diff) | |
download | cpython-5cb65917e127effb45cd790decc05d82836af284.zip cpython-5cb65917e127effb45cd790decc05d82836af284.tar.gz cpython-5cb65917e127effb45cd790decc05d82836af284.tar.bz2 |
Issue #16277: merge fix from 3.3
Diffstat (limited to 'Objects/longobject.c')
-rw-r--r-- | Objects/longobject.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Objects/longobject.c b/Objects/longobject.c index ead4680..95bd836 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -935,6 +935,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 @@ -945,6 +952,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 */ } |