Commit 336680ec authored by Benjamin Peterson's avatar Benjamin Peterson

fix more possible ref leaks in _json and use Py_CLEAR

parent 865cd640
...@@ -271,6 +271,7 @@ scanstring_str(PyObject *pystr, Py_ssize_t end, char *encoding, int strict) ...@@ -271,6 +271,7 @@ scanstring_str(PyObject *pystr, Py_ssize_t end, char *encoding, int strict)
goto bail; goto bail;
} }
if (PyList_Append(chunks, chunk)) { if (PyList_Append(chunks, chunk)) {
Py_DECREF(chunk);
goto bail; goto bail;
} }
Py_DECREF(chunk); Py_DECREF(chunk);
...@@ -372,6 +373,7 @@ scanstring_str(PyObject *pystr, Py_ssize_t end, char *encoding, int strict) ...@@ -372,6 +373,7 @@ scanstring_str(PyObject *pystr, Py_ssize_t end, char *encoding, int strict)
goto bail; goto bail;
} }
if (PyList_Append(chunks, chunk)) { if (PyList_Append(chunks, chunk)) {
Py_DECREF(chunk);
goto bail; goto bail;
} }
Py_DECREF(chunk); Py_DECREF(chunk);
...@@ -381,8 +383,7 @@ scanstring_str(PyObject *pystr, Py_ssize_t end, char *encoding, int strict) ...@@ -381,8 +383,7 @@ scanstring_str(PyObject *pystr, Py_ssize_t end, char *encoding, int strict)
if (rval == NULL) { if (rval == NULL) {
goto bail; goto bail;
} }
Py_DECREF(chunks); Py_CLEAR(chunks);
chunks = NULL;
return Py_BuildValue("(Nn)", rval, end); return Py_BuildValue("(Nn)", rval, end);
bail: bail:
Py_XDECREF(chunks); Py_XDECREF(chunks);
...@@ -533,6 +534,7 @@ scanstring_unicode(PyObject *pystr, Py_ssize_t end, int strict) ...@@ -533,6 +534,7 @@ scanstring_unicode(PyObject *pystr, Py_ssize_t end, int strict)
goto bail; goto bail;
} }
if (PyList_Append(chunks, chunk)) { if (PyList_Append(chunks, chunk)) {
Py_DECREF(chunk);
goto bail; goto bail;
} }
Py_DECREF(chunk); Py_DECREF(chunk);
......
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