diff options
Diffstat (limited to 'Objects/stringobject.c')
| -rw-r--r-- | Objects/stringobject.c | 42 | 
1 files changed, 20 insertions, 22 deletions
diff --git a/Objects/stringobject.c b/Objects/stringobject.c index f3104ee..d3ab54e 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -2036,26 +2036,25 @@ Return a copy of the string S converted to lowercase.");  static PyObject *  string_lower(PyStringObject *self)  { -	char *s = PyString_AS_STRING(self), *s_new; +	char *s;  	Py_ssize_t i, n = PyString_GET_SIZE(self);  	PyObject *newobj; -	newobj = PyString_FromStringAndSize(NULL, n); -	if (newobj == NULL) +	newobj = PyString_FromStringAndSize(PyString_AS_STRING(self), n); +	if (!newobj)  		return NULL; -	s_new = PyString_AsString(newobj); + +	s = PyString_AS_STRING(newobj); +  	for (i = 0; i < n; i++) { -		int c = Py_CHARMASK(*s++); -		if (isupper(c)) { -			*s_new = tolower(c); -		} else -			*s_new = c; -		s_new++; +		char c = Py_CHARMASK(s[i]); +		if (isupper(c)) +			s[i] = _tolower(c);  	} +  	return newobj;  } -  PyDoc_STRVAR(upper__doc__,  "S.upper() -> string\n\  \n\ @@ -2064,26 +2063,25 @@ Return a copy of the string S converted to uppercase.");  static PyObject *  string_upper(PyStringObject *self)  { -	char *s = PyString_AS_STRING(self), *s_new; +	char *s;  	Py_ssize_t i, n = PyString_GET_SIZE(self);  	PyObject *newobj; -	newobj = PyString_FromStringAndSize(NULL, n); -	if (newobj == NULL) +	newobj = PyString_FromStringAndSize(PyString_AS_STRING(self), n); +	if (!newobj)  		return NULL; -	s_new = PyString_AsString(newobj); + +	s = PyString_AS_STRING(newobj); +  	for (i = 0; i < n; i++) { -		int c = Py_CHARMASK(*s++); -		if (islower(c)) { -			*s_new = toupper(c); -		} else -			*s_new = c; -		s_new++; +		char c = Py_CHARMASK(s[i]); +		if (islower(c)) +			s[i] = _toupper(c);  	} +  	return newobj;  } -  PyDoc_STRVAR(title__doc__,  "S.title() -> string\n\  \n\  | 
