[Python-checkins] r61783 - in python/trunk: Objects/unicodeobject.c Python/pystrcmp.c

neal.norwitz python-checkins at python.org
Sun Mar 23 07:19:58 CET 2008


Author: neal.norwitz
Date: Sun Mar 23 07:19:57 2008
New Revision: 61783

Modified:
   python/trunk/Objects/unicodeobject.c
   python/trunk/Python/pystrcmp.c
Log:
Remove compiler warnings (on Alpha at least) about using chars as
array subscripts.  Using chars are dangerous b/c they are signed
on some platforms and unsigned on others.


Modified: python/trunk/Objects/unicodeobject.c
==============================================================================
--- python/trunk/Objects/unicodeobject.c	(original)
+++ python/trunk/Objects/unicodeobject.c	Sun Mar 23 07:19:57 2008
@@ -624,9 +624,9 @@
 		if (*f == '%') {
 			const char* p = f;
 			width = 0;
-			while (isdigit(*f))
+			while (isdigit((unsigned)*f))
 				width = (width*10) + *f++ - '0';
-			while (*++f && *f != '%' && !isalpha(*f))
+			while (*++f && *f != '%' && !isalpha((unsigned)*f))
 				;
 
 			/* skip the 'l' or 'z' in {%ld, %zd, %lu, %zu} since
@@ -787,12 +787,12 @@
 			zeropad = (*f == '0');
 			/* parse the width.precision part */
 			width = 0;
-			while (isdigit(*f))
+			while (isdigit((unsigned)*f))
 				width = (width*10) + *f++ - '0';
 			precision = 0;
 			if (*f == '.') {
 				f++;
-				while (isdigit(*f))
+				while (isdigit((unsigned)*f))
 					precision = (precision*10) + *f++ - '0';
 			}
 			/* handle the long flag, but only for %ld and %lu.

Modified: python/trunk/Python/pystrcmp.c
==============================================================================
--- python/trunk/Python/pystrcmp.c	(original)
+++ python/trunk/Python/pystrcmp.c	Sun Mar 23 07:19:57 2008
@@ -1,4 +1,4 @@
-/* Cross platform case insenstive string compare functions
+/* Cross platform case insensitive string compare functions
  */
 
 #include "Python.h"
@@ -8,18 +8,19 @@
 {
 	if (size == 0)
 		return 0;
-	while ((--size > 0) && (tolower(*s1) == tolower(*s2))) {
+	while ((--size > 0) &&
+	       (tolower((unsigned)*s1) == tolower((unsigned)*s2))) {
 		if (!*s1++ || !*s2++)
 			break;
 	}
-	return tolower(*s1) - tolower(*s2);
+	return tolower((unsigned)*s1) - tolower((unsigned)*s2);
 }
 
 int
 PyOS_mystricmp(const char *s1, const char *s2)
 {
-	while (*s1 && (tolower(*s1++) == tolower(*s2++))) {
+	while (*s1 && (tolower((unsigned)*s1++) == tolower((unsigned)*s2++))) {
 		;
 	}
-	return (tolower(*s1) - tolower(*s2));
+	return (tolower((unsigned)*s1) - tolower((unsigned)*s2));
 }


More information about the Python-checkins mailing list