diff options
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/codeobject.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 0a7c141..7bd292a 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -65,6 +65,13 @@ PyCode_New(int argcount, int kwonlyargcount, PyErr_BadInternalCall(); return NULL; } + if (PyString_Check(name)) { + name = PyUnicode_FromString(PyString_AS_STRING(name)); + if (name == NULL) + return NULL; + } else { + Py_INCREF(name); + } intern_strings(names); intern_strings(varnames); intern_strings(freevars); @@ -106,6 +113,7 @@ PyCode_New(int argcount, int kwonlyargcount, co->co_lnotab = lnotab; co->co_zombieframe = NULL; } + Py_DECREF(name); return co; } @@ -288,17 +296,14 @@ code_repr(PyCodeObject *co) { int lineno = -1; char *filename = "???"; - char *name = "???"; if (co->co_firstlineno != 0) lineno = co->co_firstlineno; if (co->co_filename && PyString_Check(co->co_filename)) filename = PyString_AS_STRING(co->co_filename); - if (co->co_name && PyString_Check(co->co_name)) - name = PyString_AS_STRING(co->co_name); return PyUnicode_FromFormat( - "<code object %.100s at %p, file \"%.300s\", line %d>", - name, co, filename, lineno); + "<code object %.100U at %p, file \"%.300s\", line %d>", + co->co_name, co, filename, lineno); } static PyObject * |