From: Tim Peters Date: Wed, 9 May 2001 00:24:55 +0000 (+0000) Subject: My change to string_item() left an extra reference to each 1-character X-Git-Tag: v2.2a3~1882 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cf5ad5d6f6e6db029b6e7701b8d964ad21406641;p=python 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 . --- diff --git a/Objects/stringobject.c b/Objects/stringobject.c index afaa0541aa..5bdbce9d59 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -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; }