[Python-checkins] r69661 - python/branches/io-c/Modules/io.c

benjamin.peterson python-checkins at python.org
Mon Feb 16 04:54:15 CET 2009


Author: benjamin.peterson
Date: Mon Feb 16 04:54:15 2009
New Revision: 69661

Log:
it's amazing this worked at all; I was using the wrong structs!

Modified:
   python/branches/io-c/Modules/io.c

Modified: python/branches/io-c/Modules/io.c
==============================================================================
--- python/branches/io-c/Modules/io.c	(original)
+++ python/branches/io-c/Modules/io.c	Mon Feb 16 04:54:15 2009
@@ -559,29 +559,32 @@
 }
 
 static int
-iomodule_traverse(_PyIO_State *mod, visitproc visit, void *arg) {
-    if (!mod->initialized)
+iomodule_traverse(PyObject *mod, visitproc visit, void *arg) {
+    _PyIO_State *state = IO_MOD_STATE(mod);
+    if (!state->initialized)
         return 0;
-    Py_VISIT(mod->os_module);
-    if (mod->locale_module != NULL)
-        Py_VISIT(mod->locale_module);
-    Py_VISIT(mod->unsupported_operation);
+    Py_VISIT(state->os_module);
+    if (state->locale_module != NULL) {
+        Py_VISIT(state->locale_module);
+    }
+    Py_VISIT(state->unsupported_operation);
     return 0;
 }
 
 static int
-iomodule_clear(_PyIO_State *mod) {
-    if (!mod->initialized)
+iomodule_clear(PyObject *mod) {
+    _PyIO_State *state = IO_MOD_STATE(mod);
+    if (!state->initialized)
         return 0;
-    Py_CLEAR(mod->os_module);
-    if (mod->locale_module != NULL)
-        Py_CLEAR(mod->locale_module);
-    Py_CLEAR(mod->unsupported_operation);
+    Py_CLEAR(state->os_module);
+    if (state->locale_module != NULL)
+        Py_CLEAR(state->locale_module);
+    Py_CLEAR(state->unsupported_operation);
     return 0;
 }
 
 static void
-iomodule_free(_PyIO_State *mod) {
+iomodule_free(PyObject *mod) {
     iomodule_clear(mod);
 }
 
@@ -601,9 +604,9 @@
     sizeof(_PyIO_State),
     module_methods,
     NULL,
-    (traverseproc)iomodule_traverse,
-    (inquiry)iomodule_clear,
-    (freefunc)iomodule_free
+    iomodule_traverse,
+    iomodule_clear,
+    (freefunc)iomodule_free,
 };
 
 PyMODINIT_FUNC
@@ -613,8 +616,9 @@
     _PyIO_State *state = NULL;
     PyTypeObject *base;
     if (m == NULL)
-        goto fail;
+        return NULL;
     state = IO_MOD_STATE(m);
+    state->initialized = 0;
 
     /* put os in the module state */
     state->os_module = PyImport_ImportModule("os");
@@ -773,10 +777,8 @@
     return m;
 
   fail:
-    if (state != NULL) {
-        Py_XDECREF(state->os_module);
-        Py_XDECREF(state->unsupported_operation);
-    }
-    Py_XDECREF(m);
+    Py_XDECREF(state->os_module);
+    Py_XDECREF(state->unsupported_operation);
+    Py_DECREF(m);
     return NULL;
 }


More information about the Python-checkins mailing list