[Python-checkins] python/dist/src/Objects stringobject.c,2.186,2.187

doerwalter@users.sourceforge.net doerwalter@users.sourceforge.net
Tue, 03 Sep 2002 06:53:43 -0700


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

Modified Files:
	stringobject.c 
Log Message:
Check whether a string resize is necessary at the end
of PyString_DecodeEscape(). This prevents a call to
_PyString_Resize() for the empty string, which would
result in a PyErr_BadInternalCall(), because the
empty string has more than one reference.

This closes SF bug http://www.python.org/sf/603937


Index: stringobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/stringobject.c,v
retrieving revision 2.186
retrieving revision 2.187
diff -C2 -d -r2.186 -r2.187
*** stringobject.c	2 Sep 2002 13:14:31 -0000	2.186
--- stringobject.c	3 Sep 2002 13:53:40 -0000	2.187
***************
*** 534,539 ****
  	const char *end;
  	PyObject *v;
! 	v = PyString_FromStringAndSize((char *)NULL, 
! 				       recode_encoding ? 4*len:len);
  	if (v == NULL)
  		return NULL;
--- 534,539 ----
  	const char *end;
  	PyObject *v;
! 	int newlen = recode_encoding ? 4*len:len;
! 	v = PyString_FromStringAndSize((char *)NULL, newlen);
  	if (v == NULL)
  		return NULL;
***************
*** 661,665 ****
  		}
  	}
! 	_PyString_Resize(&v, (int)(p - buf));
  	return v;
    failed:
--- 661,666 ----
  		}
  	}
! 	if (p-buf < newlen)
! 		_PyString_Resize(&v, (int)(p - buf));
  	return v;
    failed: