diff Python/_warnings.c @ 74510:c19b0ae5cd91

Finally fix all test_capi refleaks
author Antoine Pitrou <solipsis@pitrou.net>
date Wed, 18 Jan 2012 21:45:15 +0100
parents c2153ce1b5dd
children 8a5bebea9fec
line wrap: on
line diff
--- a/Python/_warnings.c	Wed Jan 18 21:35:21 2012 +0100
+++ b/Python/_warnings.c	Wed Jan 18 21:45:15 2012 +0100
@@ -958,23 +958,30 @@
     if (m == NULL)
         return NULL;
 
-    _filters = init_filters();
-    if (_filters == NULL)
-        return NULL;
+    if (_filters == NULL) {
+        _filters = init_filters();
+        if (_filters == NULL)
+            return NULL;
+    }
     Py_INCREF(_filters);
     if (PyModule_AddObject(m, "filters", _filters) < 0)
         return NULL;
 
-    _once_registry = PyDict_New();
-    if (_once_registry == NULL)
-        return NULL;
+    if (_once_registry == NULL) {
+        _once_registry = PyDict_New();
+        if (_once_registry == NULL)
+            return NULL;
+    }
     Py_INCREF(_once_registry);
     if (PyModule_AddObject(m, "_onceregistry", _once_registry) < 0)
         return NULL;
 
-    _default_action = PyUnicode_FromString("default");
-    if (_default_action == NULL)
-        return NULL;
+    if (_default_action == NULL) {
+        _default_action = PyUnicode_FromString("default");
+        if (_default_action == NULL)
+            return NULL;
+    }
+    Py_INCREF(_default_action);
     if (PyModule_AddObject(m, "_defaultaction", _default_action) < 0)
         return NULL;
     return m;