sort WARN_FOO symbols to avoid hash traversal order dependency
Gurusamy Sarathy [Tue, 17 Nov 1998 07:40:09 +0000 (07:40 +0000)]
p4raw-id: //depot/perl@2243

lib/warning.pm
warning.h
warning.pl

index c81e644..f2fa38d 100644 (file)
@@ -45,70 +45,70 @@ use Carp ;
 
 %Bits = (
     'all'              => "\x55\x55\x55\x55\x55\x55\x55\x55", # [0..31]
-    'ambiguous'                => "\x00\x00\x00\x00\x10\x00\x00\x00", # [18]
-    'closed'           => "\x00\x00\x00\x00\x00\x40\x00\x00", # [23]
-    'closure'          => "\x00\x04\x00\x00\x00\x00\x00\x00", # [5]
-    'default'          => "\x00\x00\x10\x00\x00\x00\x00\x00", # [10]
+    'ambiguous'                => "\x00\x00\x00\x04\x00\x00\x00\x00", # [13]
+    'closed'           => "\x10\x00\x00\x00\x00\x00\x00\x00", # [2]
+    'closure'          => "\x00\x00\x00\x00\x00\x40\x00\x00", # [23]
+    'default'          => "\x01\x00\x00\x00\x00\x00\x00\x00", # [0]
     'deprecated'       => "\x00\x00\x00\x10\x00\x00\x00\x00", # [14]
-    'exec'             => "\x00\x00\x00\x00\x00\x00\x01\x00", # [24]
-    'io'               => "\x00\x00\x00\x00\x00\x54\x15\x00", # [21..26]
-    'misc'             => "\x00\x00\x00\x00\x00\x00\x00\x04", # [29]
-    'newline'          => "\x00\x00\x00\x00\x00\x10\x00\x00", # [22]
-    'numeric'          => "\x00\x00\x04\x00\x00\x00\x00\x00", # [9]
-    'octal'            => "\x00\x00\x00\x00\x04\x00\x00\x00", # [17]
-    'once'             => "\x00\x00\x40\x00\x00\x00\x00\x00", # [11]
-    'parenthesis'      => "\x00\x00\x00\x00\x40\x00\x00\x00", # [19]
-    'pipe'             => "\x00\x00\x00\x00\x00\x00\x10\x00", # [26]
-    'precedence'       => "\x00\x00\x00\x00\x00\x01\x00\x00", # [20]
-    'printf'           => "\x00\x00\x00\x00\x01\x00\x00\x00", # [16]
-    'recursion'                => "\x00\x00\x00\x00\x00\x00\x00\x01", # [28]
-    'redefine'         => "\x01\x00\x00\x00\x00\x00\x00\x00", # [0]
-    'reserved'         => "\x00\x00\x00\x04\x00\x00\x00\x00", # [13]
-    'semicolon'                => "\x00\x00\x00\x40\x00\x00\x00\x00", # [15]
-    'signal'           => "\x00\x40\x00\x00\x00\x00\x00\x00", # [7]
-    'substr'           => "\x00\x01\x00\x00\x00\x00\x00\x00", # [4]
+    'exec'             => "\x40\x00\x00\x00\x00\x00\x00\x00", # [3]
+    'io'               => "\x54\x15\x00\x00\x00\x00\x00\x00", # [1..6]
+    'misc'             => "\x00\x40\x00\x00\x00\x00\x00\x00", # [7]
+    'newline'          => "\x00\x01\x00\x00\x00\x00\x00\x00", # [4]
+    'numeric'          => "\x00\x00\x01\x00\x00\x00\x00\x00", # [8]
+    'octal'            => "\x00\x00\x00\x40\x00\x00\x00\x00", # [15]
+    'once'             => "\x00\x00\x04\x00\x00\x00\x00\x00", # [9]
+    'parenthesis'      => "\x00\x00\x00\x00\x01\x00\x00\x00", # [16]
+    'pipe'             => "\x00\x04\x00\x00\x00\x00\x00\x00", # [5]
+    'precedence'       => "\x00\x00\x00\x00\x04\x00\x00\x00", # [17]
+    'printf'           => "\x00\x00\x00\x00\x10\x00\x00\x00", # [18]
+    'recursion'                => "\x00\x00\x10\x00\x00\x00\x00\x00", # [10]
+    'redefine'         => "\x00\x00\x40\x00\x00\x00\x00\x00", # [11]
+    'reserved'         => "\x00\x00\x00\x00\x40\x00\x00\x00", # [19]
+    'semicolon'                => "\x00\x00\x00\x00\x00\x01\x00\x00", # [20]
+    'signal'           => "\x00\x00\x00\x00\x00\x00\x01\x00", # [24]
+    'substr'           => "\x00\x00\x00\x00\x00\x00\x04\x00", # [25]
     'syntax'           => "\x00\x00\x00\x55\x55\x01\x00\x00", # [12..20]
-    'taint'            => "\x40\x00\x00\x00\x00\x00\x00\x00", # [3]
-    'uninitialized'    => "\x00\x00\x00\x00\x00\x00\x40\x00", # [27]
-    'unopened'         => "\x00\x00\x00\x00\x00\x00\x04\x00", # [25]
-    'unsafe'           => "\x50\x55\x01\x00\x00\x00\x00\x00", # [2..8]
-    'untie'            => "\x00\x10\x00\x00\x00\x00\x00\x00", # [6]
-    'utf8'             => "\x00\x00\x01\x00\x00\x00\x00\x00", # [8]
-    'void'             => "\x04\x00\x00\x00\x00\x00\x00\x00", # [1]
+    'taint'            => "\x00\x00\x00\x00\x00\x00\x10\x00", # [26]
+    'uninitialized'    => "\x00\x00\x00\x00\x00\x04\x00\x00", # [21]
+    'unopened'         => "\x00\x10\x00\x00\x00\x00\x00\x00", # [6]
+    'unsafe'           => "\x00\x00\x00\x00\x00\x50\x55\x01", # [22..28]
+    'untie'            => "\x00\x00\x00\x00\x00\x00\x40\x00", # [27]
+    'utf8'             => "\x00\x00\x00\x00\x00\x00\x00\x01", # [28]
+    'void'             => "\x00\x00\x00\x00\x00\x00\x00\x04", # [29]
   );
 
 %DeadBits = (
     'all'              => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", # [0..31]
-    'ambiguous'                => "\x00\x00\x00\x00\x20\x00\x00\x00", # [18]
-    'closed'           => "\x00\x00\x00\x00\x00\x80\x00\x00", # [23]
-    'closure'          => "\x00\x08\x00\x00\x00\x00\x00\x00", # [5]
-    'default'          => "\x00\x00\x20\x00\x00\x00\x00\x00", # [10]
+    'ambiguous'                => "\x00\x00\x00\x08\x00\x00\x00\x00", # [13]
+    'closed'           => "\x20\x00\x00\x00\x00\x00\x00\x00", # [2]
+    'closure'          => "\x00\x00\x00\x00\x00\x80\x00\x00", # [23]
+    'default'          => "\x02\x00\x00\x00\x00\x00\x00\x00", # [0]
     'deprecated'       => "\x00\x00\x00\x20\x00\x00\x00\x00", # [14]
-    'exec'             => "\x00\x00\x00\x00\x00\x00\x02\x00", # [24]
-    'io'               => "\x00\x00\x00\x00\x00\xa8\x2a\x00", # [21..26]
-    'misc'             => "\x00\x00\x00\x00\x00\x00\x00\x08", # [29]
-    'newline'          => "\x00\x00\x00\x00\x00\x20\x00\x00", # [22]
-    'numeric'          => "\x00\x00\x08\x00\x00\x00\x00\x00", # [9]
-    'octal'            => "\x00\x00\x00\x00\x08\x00\x00\x00", # [17]
-    'once'             => "\x00\x00\x80\x00\x00\x00\x00\x00", # [11]
-    'parenthesis'      => "\x00\x00\x00\x00\x80\x00\x00\x00", # [19]
-    'pipe'             => "\x00\x00\x00\x00\x00\x00\x20\x00", # [26]
-    'precedence'       => "\x00\x00\x00\x00\x00\x02\x00\x00", # [20]
-    'printf'           => "\x00\x00\x00\x00\x02\x00\x00\x00", # [16]
-    'recursion'                => "\x00\x00\x00\x00\x00\x00\x00\x02", # [28]
-    'redefine'         => "\x02\x00\x00\x00\x00\x00\x00\x00", # [0]
-    'reserved'         => "\x00\x00\x00\x08\x00\x00\x00\x00", # [13]
-    'semicolon'                => "\x00\x00\x00\x80\x00\x00\x00\x00", # [15]
-    'signal'           => "\x00\x80\x00\x00\x00\x00\x00\x00", # [7]
-    'substr'           => "\x00\x02\x00\x00\x00\x00\x00\x00", # [4]
+    'exec'             => "\x80\x00\x00\x00\x00\x00\x00\x00", # [3]
+    'io'               => "\xa8\x2a\x00\x00\x00\x00\x00\x00", # [1..6]
+    'misc'             => "\x00\x80\x00\x00\x00\x00\x00\x00", # [7]
+    'newline'          => "\x00\x02\x00\x00\x00\x00\x00\x00", # [4]
+    'numeric'          => "\x00\x00\x02\x00\x00\x00\x00\x00", # [8]
+    'octal'            => "\x00\x00\x00\x80\x00\x00\x00\x00", # [15]
+    'once'             => "\x00\x00\x08\x00\x00\x00\x00\x00", # [9]
+    'parenthesis'      => "\x00\x00\x00\x00\x02\x00\x00\x00", # [16]
+    'pipe'             => "\x00\x08\x00\x00\x00\x00\x00\x00", # [5]
+    'precedence'       => "\x00\x00\x00\x00\x08\x00\x00\x00", # [17]
+    'printf'           => "\x00\x00\x00\x00\x20\x00\x00\x00", # [18]
+    'recursion'                => "\x00\x00\x20\x00\x00\x00\x00\x00", # [10]
+    'redefine'         => "\x00\x00\x80\x00\x00\x00\x00\x00", # [11]
+    'reserved'         => "\x00\x00\x00\x00\x80\x00\x00\x00", # [19]
+    'semicolon'                => "\x00\x00\x00\x00\x00\x02\x00\x00", # [20]
+    'signal'           => "\x00\x00\x00\x00\x00\x00\x02\x00", # [24]
+    'substr'           => "\x00\x00\x00\x00\x00\x00\x08\x00", # [25]
     'syntax'           => "\x00\x00\x00\xaa\xaa\x02\x00\x00", # [12..20]
-    'taint'            => "\x80\x00\x00\x00\x00\x00\x00\x00", # [3]
-    'uninitialized'    => "\x00\x00\x00\x00\x00\x00\x80\x00", # [27]
-    'unopened'         => "\x00\x00\x00\x00\x00\x00\x08\x00", # [25]
-    'unsafe'           => "\xa0\xaa\x02\x00\x00\x00\x00\x00", # [2..8]
-    'untie'            => "\x00\x20\x00\x00\x00\x00\x00\x00", # [6]
-    'utf8'             => "\x00\x00\x02\x00\x00\x00\x00\x00", # [8]
-    'void'             => "\x08\x00\x00\x00\x00\x00\x00\x00", # [1]
+    'taint'            => "\x00\x00\x00\x00\x00\x00\x20\x00", # [26]
+    'uninitialized'    => "\x00\x00\x00\x00\x00\x08\x00\x00", # [21]
+    'unopened'         => "\x00\x20\x00\x00\x00\x00\x00\x00", # [6]
+    'unsafe'           => "\x00\x00\x00\x00\x00\xa0\xaa\x02", # [22..28]
+    'untie'            => "\x00\x00\x00\x00\x00\x00\x80\x00", # [27]
+    'utf8'             => "\x00\x00\x00\x00\x00\x00\x00\x02", # [28]
+    'void'             => "\x00\x00\x00\x00\x00\x00\x00\x08", # [29]
   );
 
 
index 3220bde..dde254d 100644 (file)
--- a/warning.h
+++ b/warning.h
 #define WARN_NONE              NULL
 #define WARN_ALL               (&PL_sv_yes)
 
-#define WARN_REDEFINE          0
-#define WARN_VOID              1
-#define WARN_UNSAFE            2
-#define WARN_TAINT             3
-#define WARN_SUBSTR            4
-#define WARN_CLOSURE           5
-#define WARN_UNTIE             6
-#define WARN_SIGNAL            7
-#define WARN_UTF8              8
-#define WARN_NUMERIC           9
-#define WARN_DEFAULT           10
-#define WARN_ONCE              11
+#define WARN_DEFAULT           0
+#define WARN_IO                        1
+#define WARN_CLOSED            2
+#define WARN_EXEC              3
+#define WARN_NEWLINE           4
+#define WARN_PIPE              5
+#define WARN_UNOPENED          6
+#define WARN_MISC              7
+#define WARN_NUMERIC           8
+#define WARN_ONCE              9
+#define WARN_RECURSION         10
+#define WARN_REDEFINE          11
 #define WARN_SYNTAX            12
-#define WARN_RESERVED          13
+#define WARN_AMBIGUOUS         13
 #define WARN_DEPRECATED                14
-#define WARN_SEMICOLON         15
-#define WARN_PRINTF            16
-#define WARN_OCTAL             17
-#define WARN_AMBIGUOUS         18
-#define WARN_PARENTHESIS       19
-#define WARN_PRECEDENCE                20
-#define WARN_IO                        21
-#define WARN_NEWLINE           22
-#define WARN_CLOSED            23
-#define WARN_EXEC              24
-#define WARN_UNOPENED          25
-#define WARN_PIPE              26
-#define WARN_UNINITIALIZED     27
-#define WARN_RECURSION         28
-#define WARN_MISC              29
+#define WARN_OCTAL             15
+#define WARN_PARENTHESIS       16
+#define WARN_PRECEDENCE                17
+#define WARN_PRINTF            18
+#define WARN_RESERVED          19
+#define WARN_SEMICOLON         20
+#define WARN_UNINITIALIZED     21
+#define WARN_UNSAFE            22
+#define WARN_CLOSURE           23
+#define WARN_SIGNAL            24
+#define WARN_SUBSTR            25
+#define WARN_TAINT             26
+#define WARN_UNTIE             27
+#define WARN_UTF8              28
+#define WARN_VOID              29
 
 #define WARNsize               8
 #define WARN_ALLstring         "\125\125\125\125\125\125\125\125"
index 59dac2f..86faf96 100644 (file)
@@ -59,8 +59,8 @@ sub walk
     my @list = () ;
     my ($k, $v) ;
 
-    while (($k, $v) = each %$tre) {
-
+    foreach $k (sort keys %$tre) {
+       $v = $tre->{$k};
        die "duplicate key $k\n" if defined $list{$k} ;
        $Value{$index} = uc $k ;
         push @{ $list{$k} }, $index ++ ;
@@ -70,7 +70,6 @@ sub walk
     }
 
    return @list ;
-
 }
 
 ###########################################################################