[Python-checkins] CVS: python/dist/src/Objects stringobject.c,2.108,2.109

Tim Peters tim_one@users.sourceforge.net
Tue, 08 May 2001 17:24:57 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv22208/python/dist/src/Objects

Modified Files:
	stringobject.c 
Log Message:
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>.


Index: stringobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/stringobject.c,v
retrieving revision 2.108
retrieving revision 2.109
diff -C2 -r2.108 -r2.109
*** stringobject.c	2001/05/08 22:33:50	2.108
--- stringobject.c	2001/05/09 00:24:55	2.109
***************
*** 554,558 ****
  string_item(PyStringObject *a, register int i)
  {
- 	int c;
  	PyObject *v;
  	char *pchar;
--- 554,557 ----
***************
*** 562,570 ****
  	}
  	pchar = a->ob_sval + i;
! 	c = *pchar & UCHAR_MAX;
! 	v = (PyObject *) characters[c];
  	if (v == NULL)
  		v = PyString_FromStringAndSize(pchar, 1);
! 	Py_XINCREF(v);
  	return v;
  }
--- 561,569 ----
  	}
  	pchar = a->ob_sval + i;
! 	v = (PyObject *)characters[*pchar & UCHAR_MAX];
  	if (v == NULL)
  		v = PyString_FromStringAndSize(pchar, 1);
! 	else
! 		Py_INCREF(v);
  	return v;
  }