From: Gurusamy Sarathy Date: Tue, 17 Nov 1998 07:40:09 +0000 (+0000) Subject: sort WARN_FOO symbols to avoid hash traversal order dependency X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=95dfd3ab5ca3e72850832fe8585dd8f0b3fc729f;p=p5sagit%2Fp5-mst-13.2.git sort WARN_FOO symbols to avoid hash traversal order dependency p4raw-id: //depot/perl@2243 --- diff --git a/lib/warning.pm b/lib/warning.pm index c81e644..f2fa38d 100644 --- a/lib/warning.pm +++ b/lib/warning.pm @@ -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] ); diff --git a/warning.h b/warning.h index 3220bde..dde254d 100644 --- a/warning.h +++ b/warning.h @@ -61,36 +61,36 @@ #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" diff --git a/warning.pl b/warning.pl index 59dac2f..86faf96 100644 --- a/warning.pl +++ b/warning.pl @@ -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 ; - } ###########################################################################