• Anthony Baxter's avatar
    backport tim_one's patch: · 88c646e9
    Anthony Baxter yazdı
    [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
    88c646e9
Adı
Son kayıt (commit)
Son güncelleme
..
.cvsignore Loading commit data...
abstract.c Loading commit data...
bufferobject.c Loading commit data...
cellobject.c Loading commit data...
classobject.c Loading commit data...
cobject.c Loading commit data...
complexobject.c Loading commit data...
dictobject.c Loading commit data...
fileobject.c Loading commit data...
floatobject.c Loading commit data...
frameobject.c Loading commit data...
funcobject.c Loading commit data...
intobject.c Loading commit data...
listobject.c Loading commit data...
longobject.c Loading commit data...
methodobject.c Loading commit data...
moduleobject.c Loading commit data...
object.c Loading commit data...
obmalloc.c Loading commit data...
rangeobject.c Loading commit data...
sliceobject.c Loading commit data...
stringobject.c Loading commit data...
tupleobject.c Loading commit data...
typeobject.c Loading commit data...
unicodectype.c Loading commit data...
unicodeobject.c Loading commit data...
unicodetype_db.h Loading commit data...
xxobject.c Loading commit data...