Kaydet (Commit) 1de5a722 authored tarafından Fred Drake's avatar Fred Drake

Change the example code to prefer PyModule_Add*() instead of using the

module dictionary directly.  Also, be more careful about not re-initializing
globals in the event of re-initialization of a C extension.
üst 193a3f6d
......@@ -231,7 +231,11 @@ initxx(void)
m = Py_InitModule("xx", xx_methods);
/* Add some symbolic constants to the module */
d = PyModule_GetDict(m);
ErrorObject = PyErr_NewException("xx.error", NULL, NULL);
PyDict_SetItemString(d, "error", ErrorObject);
if (ErrorObject == NULL) {
ErrorObject = PyErr_NewException("xx.error", NULL, NULL);
if (ErrorObject == NULL)
return;
}
Py_INCREF(ErrorObject);
PyModule_AddObject(d, "error", ErrorObject);
}
......@@ -238,7 +238,7 @@ static PyMethodDef xxsubtype_functions[] = {
DL_EXPORT(void)
initxxsubtype(void)
{
PyObject *m, *d;
PyObject *m;
/* Fill in deferred data addresses. This must be done before
PyType_Ready() is called. Note that PyType_Ready() automatically
......@@ -263,17 +263,13 @@ initxxsubtype(void)
if (PyType_Ready(&spamdict_type) < 0)
return;
d = PyModule_GetDict(m);
if (d == NULL)
return;
Py_INCREF(&spamlist_type);
if (PyDict_SetItemString(d, "spamlist",
(PyObject *) &spamlist_type) < 0)
if (PyModule_AddObject(m, "spamlist",
(PyObject *) &spamlist_type) < 0)
return;
Py_INCREF(&spamdict_type);
if (PyDict_SetItemString(d, "spamdict",
(PyObject *) &spamdict_type) < 0)
if (PyModule_AddObject(m, "spamdict",
(PyObject *) &spamdict_type) < 0)
return;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment