oops.  accidentally reintroduced a memory leak.  put the bugfix back.
diff --git a/Modules/_sre.c b/Modules/_sre.c
index f5698f1..61ee694 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -1704,10 +1704,11 @@
                 break;
             }
 
-            if (PyList_Append(list, item) < 0) {
-                Py_DECREF(item);
+            status = PyList_Append(list, item);
+            Py_DECREF(item);
+
+            if (status < 0)
                 goto error;
-            }
 
             if (state.ptr == state.start)
                 state.start = (void*) ((char*) state.ptr + state.charsize);