Message216095
This is _PyString_Resize(). I don't immediatlly see an error case where the string isn't freed:
int
_PyString_Resize(PyObject **pv, Py_ssize_t newsize)
{
register PyObject *v;
register PyStringObject *sv;
v = *pv;
if (!PyString_Check(v) || Py_REFCNT(v) != 1 || newsize < 0 ||
PyString_CHECK_INTERNED(v)) {
*pv = 0;
Py_DECREF(v);
PyErr_BadInternalCall();
return -1;
}
/* XXX UNREF/NEWREF interface should be more symmetrical */
_Py_DEC_REFTOTAL;
_Py_ForgetReference(v);
*pv = (PyObject *)
PyObject_REALLOC((char *)v, PyStringObject_SIZE + newsize);
if (*pv == NULL) {
PyObject_Del(v);
PyErr_NoMemory();
return -1;
}
_Py_NewReference(*pv);
sv = (PyStringObject *) *pv;
Py_SIZE(sv) = newsize;
sv->ob_sval[newsize] = '\0';
sv->ob_shash = -1; /* invalidate cached hash value */
return 0;
} |
|
Date |
User |
Action |
Args |
2014-04-14 15:30:41 | kristjan.jonsson | set | recipients:
+ kristjan.jonsson, vstinner, asvetlov, eric.snow, serhiy.storchaka, qualab |
2014-04-14 15:30:41 | kristjan.jonsson | set | messageid: <1397489441.09.0.730477275405.issue20434@psf.upfronthosting.co.za> |
2014-04-14 15:30:41 | kristjan.jonsson | link | issue20434 messages |
2014-04-14 15:30:40 | kristjan.jonsson | create | |
|