Commit b450f0ab authored by Benjamin Peterson's avatar Benjamin Peterson

fix refleak on error

parent 3044b0ef
...@@ -1608,7 +1608,7 @@ audioop_lin2adpcm_impl(PyModuleDef *module, Py_buffer *fragment, int width, PyOb ...@@ -1608,7 +1608,7 @@ audioop_lin2adpcm_impl(PyModuleDef *module, Py_buffer *fragment, int width, PyOb
Py_ssize_t i; Py_ssize_t i;
int step, valpred, delta, int step, valpred, delta,
index, sign, vpdiff, diff; index, sign, vpdiff, diff;
PyObject *rv, *str; PyObject *rv = NULL, *str;
int outputbuffer = 0, bufferstep; int outputbuffer = 0, bufferstep;
if (!audioop_check_parameters(fragment->len, width)) if (!audioop_check_parameters(fragment->len, width))
...@@ -1626,9 +1626,10 @@ audioop_lin2adpcm_impl(PyModuleDef *module, Py_buffer *fragment, int width, PyOb ...@@ -1626,9 +1626,10 @@ audioop_lin2adpcm_impl(PyModuleDef *module, Py_buffer *fragment, int width, PyOb
index = 0; index = 0;
} else if (!PyTuple_Check(state)) { } else if (!PyTuple_Check(state)) {
PyErr_SetString(PyExc_TypeError, "state must be a tuple or None"); PyErr_SetString(PyExc_TypeError, "state must be a tuple or None");
return NULL; goto exit;
} else if (!PyArg_ParseTuple(state, "ii", &valpred, &index)) } else if (!PyArg_ParseTuple(state, "ii", &valpred, &index)) {
return NULL; goto exit;
}
step = stepsizeTable[index]; step = stepsizeTable[index];
bufferstep = 1; bufferstep = 1;
...@@ -1704,6 +1705,8 @@ audioop_lin2adpcm_impl(PyModuleDef *module, Py_buffer *fragment, int width, PyOb ...@@ -1704,6 +1705,8 @@ audioop_lin2adpcm_impl(PyModuleDef *module, Py_buffer *fragment, int width, PyOb
bufferstep = !bufferstep; bufferstep = !bufferstep;
} }
rv = Py_BuildValue("(O(ii))", str, valpred, index); rv = Py_BuildValue("(O(ii))", str, valpred, index);
exit:
Py_DECREF(str); Py_DECREF(str);
return rv; return rv;
} }
......
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