]> granicus.if.org Git - python/commitdiff
Create a signed CRC32 hash. I'm not absolutely sure it's correct. At least it fixes...
authorChristian Heimes <christian@cheimes.de>
Wed, 19 Mar 2008 22:42:51 +0000 (22:42 +0000)
committerChristian Heimes <christian@cheimes.de>
Wed, 19 Mar 2008 22:42:51 +0000 (22:42 +0000)
Lib/test/test_zlib.py
Modules/zlibmodule.c

index d2fd504e864a03bc586d699975b08beb0264cf45..9cd5434ad609b341a16037d888f2542d4f84ebed 100644 (file)
@@ -42,7 +42,7 @@ class ChecksumTestCase(unittest.TestCase):
     def test_crc32_adler32_unsigned(self):
         foo = 'abcdefghijklmnop'
         # explicitly test signed behavior
-        self.assertEqual(zlib.crc32(foo), 2486878355)
+        self.assertEqual(zlib.crc32(foo), -1808088941)
         self.assertEqual(zlib.crc32('spam'), 1138425661)
         self.assertEqual(zlib.adler32(foo+foo), 3573550353)
         self.assertEqual(zlib.adler32('spam'), 72286642)
index a9783707039a3a983ceb93b0f24b8b51e11dd301..551fd3e0a76b03a8a760dab1f2a0871e75ac463a 100644 (file)
@@ -940,7 +940,7 @@ PyZlib_crc32(PyObject *self, PyObject *args)
     if (!PyArg_ParseTuple(args, "s#|k:crc32", &buf, &len, &crc32val))
        return NULL;
     crc32val = crc32(crc32val, buf, len);
-    return PyLong_FromUnsignedLong(crc32val & 0xffffffff);
+    return PyLong_FromLong(crc32val & 0xffffffff);
 }