From: Thomas Heller Date: Tue, 8 Aug 2006 17:42:30 +0000 (+0000) Subject: memcmp() can return values other than -1, 0, and +1 but tp_compare X-Git-Tag: v2.4.4c1~129 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6f89e602c29b2a0d50ccde6bd8cb36e8c4621d4;p=thirdparty%2FPython%2Fcpython.git memcmp() can return values other than -1, 0, and +1 but tp_compare must not. --- diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index 4abc7caafb34..38cf2189081c 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -229,6 +229,7 @@ print 'Buffers' try: buffer('asdf', -1) except ValueError: pass else: raise TestFailed, "buffer('asdf', -1) should raise ValueError" +cmp(buffer("abc"), buffer("def")) # used to raise a warning: tp_compare didn't return -1, 0, or 1 try: buffer(None) except TypeError: pass diff --git a/Misc/NEWS b/Misc/NEWS index c15925720c5e..ad1bb0702c76 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 2.4.4c1? Core and builtins ----------------- +- Bug #1536786: buffer comparison could emit a RuntimeWarning. + - Bug #1535165: fixed a segfault in input() and raw_input() when sys.stdin is closed. diff --git a/Objects/bufferobject.c b/Objects/bufferobject.c index da8d9fc6a257..a677d0cda348 100644 --- a/Objects/bufferobject.c +++ b/Objects/bufferobject.c @@ -230,7 +230,7 @@ buffer_compare(PyBufferObject *self, PyBufferObject *other) if (min_len > 0) { cmp = memcmp(p1, p2, min_len); if (cmp != 0) - return cmp; + return cmp < 0 ? -1 : 1; } return (len_self < len_other) ? -1 : (len_self > len_other) ? 1 : 0; }