]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
backport tim_one's patch:
authorAnthony Baxter <anthonybaxter@gmail.com>
Tue, 30 Apr 2002 03:24:12 +0000 (03:24 +0000)
committerAnthony Baxter <anthonybaxter@gmail.com>
Tue, 30 Apr 2002 03:24:12 +0000 (03:24 +0000)
commit608ee5a828d0b95167777802fa398edb5aff2dda
treeb7b302bda22bebbba03d65a89aef37c791655a87
parent026ae2fd76c39cd6b517adf92566f71ea014838a
backport tim_one's patch:

Repair widespread misuse of _PyString_Resize.  Since it's clear people
don't understand how this function works, also beefed up the docs.  The
most common usage error is of this form (often spread out across gotos):

if (_PyString_Resize(&s, n) < 0) {
Py_DECREF(s);
s = NULL;
goto outtahere;
}

The error is that if _PyString_Resize runs out of memory, it automatically
decrefs the input string object s (which also deallocates it, since its
refcount must be 1 upon entry), and sets s to NULL.  So if the "if"
branch ever triggers, it's an error to call Py_DECREF(s):  s is already
NULL!  A correct way to write the above is the simpler (and intended)

if (_PyString_Resize(&s, n) < 0)
goto outtahere;

Bugfix candidate.

Original patch(es):
python/dist/src/Doc/api/concrete.tex:1.13
Doc/api/concrete.tex