]> granicus.if.org Git - python/commitdiff
Intern __name__.
authorMartin v. Löwis <martin@v.loewis.de>
Tue, 23 Mar 2004 18:40:15 +0000 (18:40 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Tue, 23 Mar 2004 18:40:15 +0000 (18:40 +0000)
Objects/funcobject.c

index c414bcaab8682a484cad9de808415068db9bb206..76acf9865cb4d8edbb1926736bb78111350a3d99 100644 (file)
@@ -11,6 +11,7 @@ PyFunction_New(PyObject *code, PyObject *globals)
 {
        PyFunctionObject *op = PyObject_GC_New(PyFunctionObject,
                                            &PyFunction_Type);
+       static PyObject *__name__ = 0;
        if (op != NULL) {
                PyObject *doc;
                PyObject *consts;
@@ -40,7 +41,14 @@ PyFunction_New(PyObject *code, PyObject *globals)
                /* __module__: If module name is in globals, use it.
                   Otherwise, use None.
                */
-               module = PyDict_GetItemString(globals, "__name__");
+               if (!__name__) {
+                       __name__ = PyString_InternFromString("__name__");
+                       if (!__name__) {
+                               Py_DECREF(op);
+                               return NULL;
+                       }
+               }
+               module = PyDict_GetItem(globals, __name__);
                if (module) {
                    Py_INCREF(module);
                    op->func_module = module;