From 4aadc2fc2e3d4c48c97cf4445e2f95842cf75e89 Mon Sep 17 00:00:00 2001 From: Travis J Parker Date: Tue, 26 Apr 2011 22:24:37 -0700 Subject: [PATCH] missed the pybuffer decref in Decoder.decode --- decoder.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/decoder.c b/decoder.c index e757f90..6f78bd7 100644 --- a/decoder.c +++ b/decoder.c @@ -282,7 +282,7 @@ PyObject *py_yajldecoder_decode(PYARGS) _YajlDecoder *decoder = (_YajlDecoder *)(self); char *buffer = NULL; PyObject *pybuffer = NULL; - PyObject *alternate = NULL; + PyObject *result = NULL; Py_ssize_t buflen = 0; if (!PyArg_ParseTuple(args, "O", &pybuffer)) @@ -291,12 +291,13 @@ PyObject *py_yajldecoder_decode(PYARGS) Py_INCREF(pybuffer); if (PyUnicode_Check(pybuffer)) { - if (!(alternate = PyUnicode_AsUTF8String(pybuffer))) { + if (!(result = PyUnicode_AsUTF8String(pybuffer))) { Py_DECREF(pybuffer); return NULL; } Py_DECREF(pybuffer); - pybuffer = alternate; + pybuffer = result; + result = NULL; } if (PyString_Check(pybuffer)) { @@ -317,7 +318,10 @@ PyObject *py_yajldecoder_decode(PYARGS) PyUnicode_FromString("Cannot parse an empty buffer")); return NULL; } - return _internal_decode(decoder, buffer, (unsigned int)buflen); + + result = _internal_decode(decoder, buffer, (unsigned int)buflen); + Py_DECREF(pybuffer); + return result; } int yajldecoder_init(PYARGS)