Staging
v0.8.1
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
Tip revision: 88c646e99e6969b0933f2e4d8bedd5ef530f2412 authored by Anthony Baxter on 30 April 2002, 03:58:47 UTC
backport tim_one's patch:
backport tim_one's patch:
Tip revision: 88c646e
File | Mode | Size |
---|---|---|
.cvsignore | -rw-r--r-- | 17 bytes |
abstract.c | -rw-r--r-- | 34.2 KB |
bufferobject.c | -rw-r--r-- | 11.1 KB |
cellobject.c | -rw-r--r-- | 2.3 KB |
classobject.c | -rw-r--r-- | 48.2 KB |
cobject.c | -rw-r--r-- | 3.6 KB |
complexobject.c | -rw-r--r-- | 13.9 KB |
dictobject.c | -rw-r--r-- | 33.6 KB |
fileobject.c | -rw-r--r-- | 33.9 KB |
floatobject.c | -rw-r--r-- | 17.9 KB |
frameobject.c | -rw-r--r-- | 10.0 KB |
funcobject.c | -rw-r--r-- | 8.1 KB |
intobject.c | -rw-r--r-- | 19.4 KB |
listobject.c | -rw-r--r-- | 40.5 KB |
longobject.c | -rw-r--r-- | 38.8 KB |
methodobject.c | -rw-r--r-- | 5.0 KB |
moduleobject.c | -rw-r--r-- | 5.7 KB |
object.c | -rw-r--r-- | 35.5 KB |
obmalloc.c | -rw-r--r-- | 22.2 KB |
rangeobject.c | -rw-r--r-- | 6.5 KB |
sliceobject.c | -rw-r--r-- | 4.1 KB |
stringobject.c | -rw-r--r-- | 76.0 KB |
tupleobject.c | -rw-r--r-- | 12.5 KB |
typeobject.c | -rw-r--r-- | 1.3 KB |
unicodectype.c | -rw-r--r-- | 8.5 KB |
unicodeobject.c | -rw-r--r-- | 123.3 KB |
unicodetype_db.h | -rw-r--r-- | 37.0 KB |
xxobject.c | -rw-r--r-- | 2.4 KB |
Computing file changes ...