From 9d23a4eb037abc4d6026dda09ffda39eb8701a1e Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Fri, 18 Aug 2000 05:01:19 +0000 Subject: make_pair(): When comparing the pointers, they must be cast to integer types (i.e. Py_uintptr_t, our spelling of C9X's uintptr_t). ANSI specifies that pointer compares other than == and != to non-related structures are undefined. This quiets an Insure portability warning. --- Objects/object.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Objects/object.c b/Objects/object.c index 99fea99..f61a1dd 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -371,12 +371,14 @@ static PyObject * make_pair(PyObject *v, PyObject *w) { PyObject *pair; + Py_uintptr_t iv = (Py_uintptr_t)v; + Py_uintptr_t iw = (Py_uintptr_t)w; pair = PyTuple_New(2); if (pair == NULL) { return NULL; } - if (v <= w) { + if (iv <= iw) { PyTuple_SET_ITEM(pair, 0, PyLong_FromVoidPtr((void *)v)); PyTuple_SET_ITEM(pair, 1, PyLong_FromVoidPtr((void *)w)); } else { @@ -487,7 +489,9 @@ PyObject_Compare(PyObject *v, PyObject *w) return strcmp(vname, wname); } if (vtp->tp_compare == NULL) { - return (v < w) ? -1 : 1; + Py_uintptr_t iv = (Py_uintptr_t)v; + Py_uintptr_t iw = (Py_uintptr_t)w; + return (iv < iw) ? -1 : 1; } _PyCompareState_nesting++; if (_PyCompareState_nesting > NESTING_LIMIT -- cgit v0.12