From: Armin R. <ar...@us...> - 2003-06-13 09:41:28
|
Update of /cvsroot/psyco/psyco/c/Objects In directory sc8-pr-cvs1:/tmp/cvs-serv8116 Modified Files: pstringobject.c Log Message: bug fix Index: pstringobject.c =================================================================== RCS file: /cvsroot/psyco/psyco/c/Objects/pstringobject.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** pstringobject.c 12 Jun 2003 14:58:07 -0000 1.17 --- pstringobject.c 13 Jun 2003 09:41:25 -0000 1.18 *************** *** 944,961 **** if (a->ob_type == &PsycoBufStr_Type) { ! /* this checks that no one else uses this buffer past a_size */ ! if (a->ob_shash == a_size) { ! ! if (a_size < a->ob_size-BUFSTR_ACCEPT_OVERALLOCATED && ! a->ob_refcnt == 1) { ! /* this is the case where 'a' is too ! overallocated but can be reduced in-place */ ! a = (PyStringObject*) PyObject_REALLOC( ! (void*) a, ! sizeof(PyStringObject) + ! a_size * sizeof(char)); ! extra_assert(a != NULL); /* shrinking */ ! } ! a->ob_type = &PyString_Type; a->ob_size = a_size; --- 944,953 ---- if (a->ob_type == &PsycoBufStr_Type) { ! /* this checks that no one else uses this buffer past a_size ! and limit the wasted overallocated space */ ! /* XXX try using PyObject_REALLOC if we are 100% sure that ! nobody else has a pointer to the area */ ! if (a->ob_shash == a_size && ! a_size >= a->ob_size-BUFSTR_ACCEPT_OVERALLOCATED) { a->ob_type = &PyString_Type; a->ob_size = a_size; *************** *** 972,976 **** return a; } - } else if (a->ob_size == a_size) { --- 964,967 ---- |