summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
Diffstat (limited to 'Objects')
-rw-r--r--Objects/funcobject.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/Objects/funcobject.c b/Objects/funcobject.c
index c414bca..76acf98 100644
--- a/Objects/funcobject.c
+++ b/Objects/funcobject.c
@@ -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;