summaryrefslogtreecommitdiffstats
path: root/Objects/stringobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/stringobject.c')
-rw-r--r--Objects/stringobject.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index fd0a570..2667fa9 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -774,22 +774,17 @@ string_join(PyStringObject *self, PyObject *args)
if (!PyString_Check(item)){
if (PyUnicode_Check(item)) {
Py_DECREF(res);
- Py_DECREF(item);
return PyUnicode_Join((PyObject *)self,
seq);
}
PyErr_Format(PyExc_TypeError,
"sequence item %i: expected string, %.80s found",
i, item->ob_type->tp_name);
- Py_DECREF(item);
- Py_DECREF(seq);
goto finally;
}
slen = PyString_GET_SIZE(item);
while (reslen + slen + seplen >= sz) {
if (_PyString_Resize(&res, sz*2)) {
- Py_DECREF(item);
- Py_DECREF(seq);
goto finally;
}
sz *= 2;
@@ -801,15 +796,16 @@ string_join(PyStringObject *self, PyObject *args)
reslen += seplen;
}
memcpy(p, PyString_AS_STRING(item), slen);
- Py_DECREF(item);
p += slen;
reslen += slen;
}
if (_PyString_Resize(&res, reslen))
goto finally;
+ Py_DECREF(seq);
return res;
finally:
+ Py_DECREF(seq);
Py_DECREF(res);
return NULL;
}