[Python-Dev] questions about memory management (original) (raw)
Julia Lawall julia.lawall at lip6.fr
Sat Apr 28 10:06:52 CEST 2012
- Previous message: [Python-Dev] Summary of Python tracker Issues
- Next message: [Python-Dev] questions about memory management
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
In Python-3.2.3/Python/import.c, in the function _PyImport_FixupExtensionUnicode, is any call to PyDict_DelItemString needed before the final failure returns?
modules = PyImport_GetModuleDict();
if (PyDict_SetItemString(modules, name, mod) < 0)
return -1;
if (_PyState_AddModule(mod, def) < 0) {
PyDict_DelItemString(modules, name);
return -1;
}
if (def->m_size == -1) {
if (def->m_base.m_copy) {
/* Somebody already imported the module,
likely under a different name.
XXX this should really not happen. */
Py_DECREF(def->m_base.m_copy);
def->m_base.m_copy = NULL;
}
dict = PyModule_GetDict(mod);
if (dict == NULL)
return -1;
def->m_base.m_copy = PyDict_Copy(dict);
if (def->m_base.m_copy == NULL)
return -1;
}
In Python-3.2.3/Modules/ossaudiodev.c, in the function build_namelists, is it intentional that labels is not freed in the last failure case:
if (PyModule_AddObject(module, "control_labels", labels) == -1)
goto error2;
if (PyModule_AddObject(module, "control_names", names) == -1)
goto error1;
return 0;
error2: Py_XDECREF(labels); error1: Py_XDECREF(names); return -1;
thanks, julia
- Previous message: [Python-Dev] Summary of Python tracker Issues
- Next message: [Python-Dev] questions about memory management
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]