From cf5ad5d6f6e6db029b6e7701b8d964ad21406641 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Wed, 9 May 2001 00:24:55 +0000 Subject: [PATCH] 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 . --- Objects/stringobject.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Objects/stringobject.c b/Objects/stringobject.c index afaa0541aa2..5bdbce9d594 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; }