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

Tim Peters tim_one@users.sourceforge.net
2001年5月08日 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;
 }

AltStyle によって変換されたページ (->オリジナル) /