]> granicus.if.org Git - python/commitdiff
Have set conversion replace existing constant if not used elsewhere.
authorRaymond Hettinger <python@rcn.com>
Wed, 9 Feb 2005 21:24:51 +0000 (21:24 +0000)
committerRaymond Hettinger <python@rcn.com>
Wed, 9 Feb 2005 21:24:51 +0000 (21:24 +0000)
Python/compile.c

index dd58aa64280f288295475b744b26aee89e65f737..f90f82c878dc51280911aa6afd777dc4fc04b0fe 100644 (file)
@@ -570,7 +570,13 @@ try_set_conversion(unsigned char *codestr, PyObject *consts)
                return 0;
        }
 
-       /* Append new constant onto consts list.*/
+       /* Append new constant onto consts list or replace existing constant
+          if there are no other references to it.*/
+       if (constant->ob_refcnt == 1) {
+               PyList_SET_ITEM(consts, arg, newconst);
+               Py_DECREF(constant);
+               return 1;
+       }
        len_consts = PyList_GET_SIZE(consts);
        if (PyList_Append(consts, newconst)) {
                Py_DECREF(newconst);