[Python-checkins] CVS: python/dist/src/Objects stringobject.c,2.108,2.109
Tim Peters
tim_one@users.sourceforge.net
Tue, 08 May 2001 17:24:57 -0700
Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv22208/python/dist/src/Objects
Modified Files:
stringobject.c
Log Message:
My change to string_item() left an extra reference to each 1-character
interned string created by "string"[i]. Since they're immortal anyway,
this was hard to notice, but it was still wrong <wink>.
Index: stringobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/stringobject.c,v
retrieving revision 2.108
retrieving revision 2.109
diff -C2 -r2.108 -r2.109
*** stringobject.c 2001/05/08 22:33:50 2.108
--- stringobject.c 2001/05/09 00:24:55 2.109
***************
*** 554,558 ****
string_item(PyStringObject *a, register int i)
{
- int c;
PyObject *v;
char *pchar;
--- 554,557 ----
***************
*** 562,570 ****
}
pchar = a->ob_sval + i;
! c = *pchar & UCHAR_MAX;
! v = (PyObject *) characters[c];
if (v == NULL)
v = PyString_FromStringAndSize(pchar, 1);
! Py_XINCREF(v);
return v;
}
--- 561,569 ----
}
pchar = a->ob_sval + i;
! v = (PyObject *)characters[*pchar & UCHAR_MAX];
if (v == NULL)
v = PyString_FromStringAndSize(pchar, 1);
! else
! Py_INCREF(v);
return v;
}