From: Barry Warsaw Date: Sat, 20 Jan 2001 06:24:55 +0000 (+0000) Subject: Tim chastens: X-Git-Tag: v2.1a1~86 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b0e754d48868bb4f7e3f3a310bbdbe167bc85b80;p=python Tim chastens: Barry, that comment belongs in the code, not in the checkin msg. The code *used* to do this correctly (as you well know, since you & I went thru considerable pain to fix this the first time). However, because the *reason* for the convolution wasn't recorded in the code as a comment, somebody threw it all away the first time it got reworked. c-code-isn't-often-self-explanatory-ly y'rs - tim default_3way_compare(): Stick the checkin message from 2.110 in a comment. --- diff --git a/Objects/object.c b/Objects/object.c index e2a019fdf7..91531e0d25 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -524,7 +524,11 @@ default_3way_compare(PyObject *v, PyObject *w) int c; if (v->ob_type == w->ob_type) { - /* same type: compare pointers */ + /* When comparing these 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. + */ Py_uintptr_t vv = (Py_uintptr_t)v; Py_uintptr_t ww = (Py_uintptr_t)w; return (vv < ww) ? -1 : (vv > ww) ? 1 : 0;