Mercurial > cpython-lru_cache-weakref
diff Objects/classobject.c @ 14049:b913125619c8 legacy-trunk
PyInstance_DoBinOp(): 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.
| author | Barry Warsaw <barry@python.org> |
|---|---|
| date | Fri, 18 Aug 2000 04:57:32 +0000 |
| parents | 91f847a783d2 |
| children | 52fd496d3532 |
line wrap: on
line diff
--- a/Objects/classobject.c Fri Aug 18 04:53:33 2000 +0000 +++ b/Objects/classobject.c Fri Aug 18 04:57:32 2000 +0000 @@ -1207,13 +1207,16 @@ { char buf[256]; PyObject *result = NULL; + if (halfbinop(v, w, opname, &result, thisfunc, 0) <= 0) return result; if (halfbinop(w, v, ropname, &result, thisfunc, 1) <= 0) return result; /* Sigh -- special case for comparisons */ if (strcmp(opname, "__cmp__") == 0) { - long c = (v < w) ? -1 : (v > w) ? 1 : 0; + Py_uintptr_t iv = (Py_uintptr_t)v; + Py_uintptr_t iw = (Py_uintptr_t)w; + long c = (iv < iw) ? -1 : (iv > iw) ? 1 : 0; return PyInt_FromLong(c); } sprintf(buf, "%s nor %s defined for these operands", opname, ropname);
