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:
Tim Peters 2001-05-09 00:24:55 +00:00
parent 5b4d477568
commit cf5ad5d6f6
1 changed files with 3 additions and 4 deletions

View File

@ -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;
}