]> granicus.if.org Git - python/commitdiff
Preserve sign of -0.0 when result is run through marshal.
authorRaymond Hettinger <python@rcn.com>
Wed, 23 Feb 2005 13:37:55 +0000 (13:37 +0000)
committerRaymond Hettinger <python@rcn.com>
Wed, 23 Feb 2005 13:37:55 +0000 (13:37 +0000)
Python/compile.c

index 6e68d0fd5da6cee5ab4134c7acc9bc0d293a19aa..71e90f7e21d5eabc8b75ccc29638ed30c0faec86 100644 (file)
@@ -545,7 +545,7 @@ fold_binops_on_constants(unsigned char *codestr, PyObject *consts)
 static int
 fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts)
 {
-       PyObject *newconst, *v;
+       PyObject *newconst=NULL, *v;
        int len_consts, opcode;
 
        /* Pre-conditions */
@@ -557,7 +557,9 @@ fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts)
        opcode = codestr[3];
        switch (opcode) {
        case UNARY_NEGATIVE:
-               newconst = PyNumber_Negative(v);
+               /* Preserve the sign of -0.0 */
+               if (PyObject_IsTrue(v) == 1)
+                       newconst = PyNumber_Negative(v);
                break;
        case UNARY_CONVERT:
                newconst = PyObject_Repr(v);