mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
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
1 changed files with 3 additions and 4 deletions
|
@ -553,7 +553,6 @@ string_contains(PyObject *a, PyObject *el)
|
||||||
static PyObject *
|
static PyObject *
|
||||||
string_item(PyStringObject *a, register int i)
|
string_item(PyStringObject *a, register int i)
|
||||||
{
|
{
|
||||||
int c;
|
|
||||||
PyObject *v;
|
PyObject *v;
|
||||||
char *pchar;
|
char *pchar;
|
||||||
if (i < 0 || i >= a->ob_size) {
|
if (i < 0 || i >= a->ob_size) {
|
||||||
|
@ -561,11 +560,11 @@ string_item(PyStringObject *a, register int i)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
pchar = a->ob_sval + i;
|
pchar = a->ob_sval + i;
|
||||||
c = *pchar & UCHAR_MAX;
|
v = (PyObject *)characters[*pchar & UCHAR_MAX];
|
||||||
v = (PyObject *) characters[c];
|
|
||||||
if (v == NULL)
|
if (v == NULL)
|
||||||
v = PyString_FromStringAndSize(pchar, 1);
|
v = PyString_FromStringAndSize(pchar, 1);
|
||||||
Py_XINCREF(v);
|
else
|
||||||
|
Py_INCREF(v);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue