summaryrefslogtreecommitdiffstats
path: root/Doc/ext/run-func.c
diff options
context:
space:
mode:
Diffstat (limited to 'Doc/ext/run-func.c')
-rw-r--r--Doc/ext/run-func.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/Doc/ext/run-func.c b/Doc/ext/run-func.c
index b5be5c6..ff74290 100644
--- a/Doc/ext/run-func.c
+++ b/Doc/ext/run-func.c
@@ -20,11 +20,8 @@ main(int argc, char *argv[])
Py_DECREF(pName);
if (pModule != NULL) {
- pDict = PyModule_GetDict(pModule);
- /* pDict is a borrowed reference */
-
- pFunc = PyDict_GetItemString(pDict, argv[2]);
- /* pFun: Borrowed reference */
+ pFunc = PyDict_GetItemString(pModule, argv[2]);
+ /* pFunc is a new reference */
if (pFunc && PyCallable_Check(pFunc)) {
pArgs = PyTuple_New(argc - 3);
@@ -46,18 +43,19 @@ main(int argc, char *argv[])
Py_DECREF(pValue);
}
else {
+ Py_DECREF(pFunc);
Py_DECREF(pModule);
PyErr_Print();
fprintf(stderr,"Call failed\n");
return 1;
}
- /* pDict and pFunc are borrowed and must not be Py_DECREF-ed */
}
else {
if (PyErr_Occurred())
PyErr_Print();
fprintf(stderr, "Cannot find function \"%s\"\n", argv[2]);
}
+ Py_XDECREF(pFunc);
Py_DECREF(pModule);
}
else {