Staging
v0.8.1
https://github.com/python/cpython
Revision 88c646e99e6969b0933f2e4d8bedd5ef530f2412 authored by Anthony Baxter on 30 April 2002, 03:58:47 UTC, committed by Anthony Baxter on 30 April 2002, 03:58:47 UTC
[Re-did unicodeobject.c - it's changed a lot since 2.1 :) Pretty confident
that it's correct]

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/Objects/fileobject.c:2.161
python/dist/src/Objects/stringobject.c:2.161
python/dist/src/Objects/unicodeobject.c:2.147
1 parent b64e6dc
History
Tip revision: 88c646e99e6969b0933f2e4d8bedd5ef530f2412 authored by Anthony Baxter on 30 April 2002, 03:58:47 UTC
backport tim_one's patch:
Tip revision: 88c646e
File Mode Size
RPM
ACKS -rw-r--r-- 6.3 KB
AIX-NOTES -rw-r--r-- 7.3 KB
BLURB -rw-r--r-- 1.6 KB
BLURB.LUTZ -rw-r--r-- 5.6 KB
BLURB.WINDOWS -rw-r--r-- 3.8 KB
BeOS-NOTES -rw-r--r-- 1.4 KB
BeOS-setup.py -rw-r--r-- 24.6 KB
HISTORY -rw-r--r-- 305.2 KB
HPUX-NOTES -rw-r--r-- 1.0 KB
HYPE -rw-r--r-- 3.1 KB
Makefile.pre.in -rw-r--r-- 9.9 KB
NEWS -rw-r--r-- 78.3 KB
NEXT-NOTES -rw-r--r-- 2.2 KB
PURIFY.README -rw-r--r-- 3.6 KB
Porting -rw-r--r-- 1.9 KB
README -rw-r--r-- 1.8 KB
RFD -rw-r--r-- 3.9 KB
cheatsheet -rw-r--r-- 21.8 KB
comparisons -rw-r--r-- 6.6 KB
editline-fix -rw-r--r-- 2.4 KB
faq2html.py -rwxr-xr-x 6.6 KB
find_recursionlimit.py -rw-r--r-- 2.2 KB
fixfuncptrs.sh -rwxr-xr-x 2.2 KB
gdbinit -rw-r--r-- 898 bytes
indent.pro -rw-r--r-- 66 bytes
python-mode.el -rw-r--r-- 120.1 KB
python.man -rw-r--r-- 10.2 KB
renumber.py -rwxr-xr-x 2.6 KB
setuid-prog.c -rw-r--r-- 5.3 KB
unicode.txt -rw-r--r-- 38.0 KB
vgrindefs -rw-r--r-- 498 bytes

README

back to top