]> granicus.if.org Git - python/commitdiff
- Fixing annoying warnings.
authorGustavo Niemeyer <gustavo@niemeyer.net>
Sat, 14 Feb 2004 00:31:13 +0000 (00:31 +0000)
committerGustavo Niemeyer <gustavo@niemeyer.net>
Sat, 14 Feb 2004 00:31:13 +0000 (00:31 +0000)
Modules/_sre.c
Modules/sre.h

index ee073426b5ea6456ef1e276c4d1726acc66c0493..45139bc0023524555390b10d1f42122bbc921c78 100644 (file)
@@ -146,20 +146,21 @@ static char sre_char_lower[128] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
 
 static unsigned int sre_lower(unsigned int ch)
 {
-    return ((ch) < 128 ? sre_char_lower[ch] : ch);
+    return ((ch) < 128 ? (unsigned int)sre_char_lower[ch] : ch);
 }
 
 /* locale-specific character predicates */
-
-#define SRE_LOC_IS_DIGIT(ch) ((ch) < 256 ? isdigit((ch)) : 0)
-#define SRE_LOC_IS_SPACE(ch) ((ch) < 256 ? isspace((ch)) : 0)
+/* !(c & ~N) == (c < N+1) for any unsigned c, this avoids
+ * warnings when c's type supports only numbers < N+1 */
+#define SRE_LOC_IS_DIGIT(ch) (!((ch) & ~255) ? isdigit((ch)) : 0)
+#define SRE_LOC_IS_SPACE(ch) (!((ch) & ~255) ? isspace((ch)) : 0)
 #define SRE_LOC_IS_LINEBREAK(ch) ((ch) == '\n')
-#define SRE_LOC_IS_ALNUM(ch) ((ch) < 256 ? isalnum((ch)) : 0)
+#define SRE_LOC_IS_ALNUM(ch) (!((ch) & ~255) ? isalnum((ch)) : 0)
 #define SRE_LOC_IS_WORD(ch) (SRE_LOC_IS_ALNUM((ch)) || (ch) == '_')
 
 static unsigned int sre_lower_locale(unsigned int ch)
 {
-    return ((ch) < 256 ? tolower((ch)) : ch);
+    return ((ch) < 256 ? (unsigned int)tolower((ch)) : ch);
 }
 
 /* unicode-specific character predicates */
@@ -484,7 +485,9 @@ SRE_CHARSET(SRE_CODE* set, SRE_CODE ch)
                 set += count*16;
             }
             else {
-                if (ch < 65536)
+                /* !(c & ~N) == (c < N+1) for any unsigned c, this avoids
+                 * warnings when c's type supports only numbers < N+1 */
+                if (!(ch & ~65535))
                     block = ((unsigned char*)set)[ch >> 8];
                 else
                     block = -1;
index 452e77a7258fbc97286bdc1aa284a5e1b71e224e..ba8500b9c4576d0c1abd2b8a960392a87005efde 100644 (file)
@@ -76,8 +76,8 @@ typedef struct {
     void* mark[SRE_MARK_SIZE];
     /* dynamically allocated stuff */
     char* data_stack;
-    int data_stack_size;
-    int data_stack_base;
+    unsigned int data_stack_size;
+    unsigned int data_stack_base;
     /* current repeat context */
     SRE_REPEAT *repeat;
     /* hooks */