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);