mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
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.
This commit is contained in:
parent
bc7c7f991c
commit
dc55d715bb
1 changed files with 4 additions and 1 deletions
|
@ -1207,13 +1207,16 @@ PyInstance_DoBinOp(PyObject *v, PyObject *w, char *opname, char *ropname,
|
||||||
{
|
{
|
||||||
char buf[256];
|
char buf[256];
|
||||||
PyObject *result = NULL;
|
PyObject *result = NULL;
|
||||||
|
|
||||||
if (halfbinop(v, w, opname, &result, thisfunc, 0) <= 0)
|
if (halfbinop(v, w, opname, &result, thisfunc, 0) <= 0)
|
||||||
return result;
|
return result;
|
||||||
if (halfbinop(w, v, ropname, &result, thisfunc, 1) <= 0)
|
if (halfbinop(w, v, ropname, &result, thisfunc, 1) <= 0)
|
||||||
return result;
|
return result;
|
||||||
/* Sigh -- special case for comparisons */
|
/* Sigh -- special case for comparisons */
|
||||||
if (strcmp(opname, "__cmp__") == 0) {
|
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);
|
return PyInt_FromLong(c);
|
||||||
}
|
}
|
||||||
sprintf(buf, "%s nor %s defined for these operands", opname, ropname);
|
sprintf(buf, "%s nor %s defined for these operands", opname, ropname);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue