@@ -254,24 +254,26 @@ strop_lower(self, args)
254254 object * self ; /* Not used */
255255 object * args ;
256256{
257- char * s ;
257+ char * s , * s_new ;
258258 int i , n ;
259259 object * new ;
260260 int changed ;
261261
262262 if (!getargs (args , "s#" , & s , & n ))
263263 return NULL ;
264- new = newsizedstringobject (s , n );
264+ new = newsizedstringobject (NULL , n );
265265 if (new == NULL )
266266 return NULL ;
267- s = getstringvalue (new );
267+ s_new = getstringvalue (new );
268268 changed = 0 ;
269269 for (i = 0 ; i < n ; i ++ ) {
270- char c = s [ i ] ;
270+ char c = * s ++ ;
271271 if (isupper (c )) {
272272 changed = 1 ;
273- s [i ] = tolower (c );
274- }
273+ * s_new = tolower (c );
274+ } else
275+ * s_new = c ;
276+ s_new ++ ;
275277 }
276278 if (!changed ) {
277279 DECREF (new );
@@ -287,24 +289,26 @@ strop_upper(self, args)
287289 object * self ; /* Not used */
288290 object * args ;
289291{
290- char * s ;
292+ char * s , * s_new ;
291293 int i , n ;
292294 object * new ;
293295 int changed ;
294296
295297 if (!getargs (args , "s#" , & s , & n ))
296298 return NULL ;
297- new = newsizedstringobject (s , n );
299+ new = newsizedstringobject (NULL , n );
298300 if (new == NULL )
299301 return NULL ;
300- s = getstringvalue (new );
302+ s_new = getstringvalue (new );
301303 changed = 0 ;
302304 for (i = 0 ; i < n ; i ++ ) {
303- char c = s [ i ] ;
305+ char c = * s ++ ;
304306 if (islower (c )) {
305307 changed = 1 ;
306- s [i ] = toupper (c );
307- }
308+ * s_new = toupper (c );
309+ } else
310+ * s_new = c ;
311+ s_new ++ ;
308312 }
309313 if (!changed ) {
310314 DECREF (new );
@@ -320,28 +324,31 @@ strop_swapcase(self, args)
320324 object * self ; /* Not used */
321325 object * args ;
322326{
323- char * s ;
327+ char * s , * s_new ;
324328 int i , n ;
325329 object * new ;
326330 int changed ;
327331
328332 if (!getargs (args , "s#" , & s , & n ))
329333 return NULL ;
330- new = newsizedstringobject (s , n );
334+ new = newsizedstringobject (NULL , n );
331335 if (new == NULL )
332336 return NULL ;
333- s = getstringvalue (new );
337+ s_new = getstringvalue (new );
334338 changed = 0 ;
335339 for (i = 0 ; i < n ; i ++ ) {
336- char c = s [ i ] ;
340+ char c = * s ++ ;
337341 if (islower (c )) {
338342 changed = 1 ;
339- s [ i ] = toupper (c );
343+ * s_new = toupper (c );
340344 }
341345 else if (isupper (c )) {
342346 changed = 1 ;
343- s [ i ] = tolower (c );
347+ * s_new = tolower (c );
344348 }
349+ else
350+ * s_new = c ;
351+ s_new ++ ;
345352 }
346353 if (!changed ) {
347354 DECREF (new );
0 commit comments