summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2000-08-18 05:01:19 (GMT)
committerBarry Warsaw <barry@python.org>2000-08-18 05:01:19 (GMT)
commit9d23a4eb037abc4d6026dda09ffda39eb8701a1e (patch)
tree72d7b01211c70300b626e417c28737ce270445f5 /Objects
parent67c1a04bbbad20a6a66aa32d35fe41baf2660a51 (diff)
downloadcpython-9d23a4eb037abc4d6026dda09ffda39eb8701a1e.zip
cpython-9d23a4eb037abc4d6026dda09ffda39eb8701a1e.tar.gz
cpython-9d23a4eb037abc4d6026dda09ffda39eb8701a1e.tar.bz2
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.
Diffstat (limited to 'Objects')
-rw-r--r--Objects/object.c8
1 files 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