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>.
This commit is contained in:
parent
5b4d477568
commit
cf5ad5d6f6
|
@ -553,7 +553,6 @@ string_contains(PyObject *a, PyObject *el)
|
|||
static PyObject *
|
||||
string_item(PyStringObject *a, register int i)
|
||||
{
|
||||
int c;
|
||||
PyObject *v;
|
||||
char *pchar;
|
||||
if (i < 0 || i >= a->ob_size) {
|
||||
|
@ -561,11 +560,11 @@ string_item(PyStringObject *a, register int i)
|
|||
return NULL;
|
||||
}
|
||||
pchar = a->ob_sval + i;
|
||||
c = *pchar & UCHAR_MAX;
|
||||
v = (PyObject *) characters[c];
|
||||
v = (PyObject *)characters[*pchar & UCHAR_MAX];
|
||||
if (v == NULL)
|
||||
v = PyString_FromStringAndSize(pchar, 1);
|
||||
Py_XINCREF(v);
|
||||
else
|
||||
Py_INCREF(v);
|
||||
return v;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue