fix more possible ref leaks in _json and use Py_CLEAR
diff --git a/Modules/_json.c b/Modules/_json.c
index 437eab0..2e77f1c 100644
--- a/Modules/_json.c
+++ b/Modules/_json.c
@@ -271,6 +271,7 @@
goto bail;
}
if (PyList_Append(chunks, chunk)) {
+ Py_DECREF(chunk);
goto bail;
}
Py_DECREF(chunk);
@@ -372,6 +373,7 @@
goto bail;
}
if (PyList_Append(chunks, chunk)) {
+ Py_DECREF(chunk);
goto bail;
}
Py_DECREF(chunk);
@@ -381,8 +383,7 @@
if (rval == NULL) {
goto bail;
}
- Py_DECREF(chunks);
- chunks = NULL;
+ Py_CLEAR(chunks);
return Py_BuildValue("(Nn)", rval, end);
bail:
Py_XDECREF(chunks);
@@ -533,6 +534,7 @@
goto bail;
}
if (PyList_Append(chunks, chunk)) {
+ Py_DECREF(chunk);
goto bail;
}
Py_DECREF(chunk);