[Python-checkins] cpython (2.7): fix refleak in the shift-by-zero case (#27870)
benjamin.peterson
python-checkins at python.org
Sat Dec 3 14:04:00 EST 2016
https://hg.python.org/cpython/rev/2b190bfd9ab4
changeset: 105426:2b190bfd9ab4
branch: 2.7
user: Benjamin Peterson <benjamin at python.org>
date: Sat Dec 03 11:01:50 2016 -0800
summary:
fix refleak in the shift-by-zero case (#27870)
files:
Objects/longobject.c | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/Objects/longobject.c b/Objects/longobject.c
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -3710,14 +3710,15 @@
shiftby = PyLong_AsSsize_t((PyObject *)b);
if (shiftby == -1L && PyErr_Occurred())
- goto lshift_error;
+ goto out;
if (shiftby < 0) {
PyErr_SetString(PyExc_ValueError, "negative shift count");
- goto lshift_error;
+ goto out;
}
if (Py_SIZE(a) == 0) {
- return PyLong_FromLong(0);
+ z = (PyLongObject *)PyLong_FromLong(0);
+ goto out;
}
/* wordshift, remshift = divmod(shiftby, PyLong_SHIFT) */
@@ -3730,7 +3731,7 @@
++newsize;
z = _PyLong_New(newsize);
if (z == NULL)
- goto lshift_error;
+ goto out;
if (a->ob_size < 0)
z->ob_size = -(z->ob_size);
for (i = 0; i < wordshift; i++)
@@ -3746,7 +3747,7 @@
else
assert(!accum);
z = long_normalize(z);
- lshift_error:
+ out:
Py_DECREF(a);
Py_DECREF(b);
return (PyObject *) z;
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list