This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author kristjan.jonsson
Recipients asvetlov, eric.snow, kristjan.jonsson, qualab, serhiy.storchaka, vstinner
Date 2014-04-14.15:30:40
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1397489441.09.0.730477275405.issue20434@psf.upfronthosting.co.za>
In-reply-to
Content
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;
}
History
Date User Action Args
2014-04-14 15:30:41kristjan.jonssonsetrecipients: + kristjan.jonsson, vstinner, asvetlov, eric.snow, serhiy.storchaka, qualab
2014-04-14 15:30:41kristjan.jonssonsetmessageid: <1397489441.09.0.730477275405.issue20434@psf.upfronthosting.co.za>
2014-04-14 15:30:41kristjan.jonssonlinkissue20434 messages
2014-04-14 15:30:40kristjan.jonssoncreate