summaryrefslogtreecommitdiffstats
path: root/util/mkdef.pl
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2016-02-26 14:10:17 +0000
committerMatt Caswell <matt@openssl.org>2016-02-26 15:01:17 +0000
commitd9706f1964ffbfcfe700cfeb59605465b309013a (patch)
tree39e2436deb706860e3e1fcc5cc4f72dc9560da8e /util/mkdef.pl
parent0f2d3e4e4e88e92998329aab0fd912d89dc4a836 (diff)
Fix a mkdef.pl warning
mkdef.pl was issuing the following error: Use of uninitialized value within %tag in numeric eq (==) at util/mkdef.pl line 560, <IN> line 92 This was because it was treating a __cplusplus "#ifdef" check as a "tag" but then skipping over the corresponding "#endif". Therefore after processing a file it still had "left over" tags from processing the previous file. It was also getting confused by "#if" checks that didn't match is pre-defined styles. Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'util/mkdef.pl')
-rwxr-xr-xutil/mkdef.pl10
1 files changed, 9 insertions, 1 deletions
diff --git a/util/mkdef.pl b/util/mkdef.pl
index a79ddf53fb..a7abfd2d5c 100755
--- a/util/mkdef.pl
+++ b/util/mkdef.pl
@@ -494,7 +494,10 @@ sub do_defs
$cpp-- if /^#\s*endif/;
next;
}
- $cpp = 1 if /^#.*ifdef.*cplusplus/;
+ if (/^#.*ifdef.*cplusplus/) {
+ $cpp = 1;
+ next;
+ }
s/{[^{}]*}//gs; # ignore {} blocks
print STDERR "DEBUG: \$def=\"$def\"\n" if $debug && $def ne "";
@@ -581,6 +584,7 @@ sub do_defs
pop(@tag);
} elsif (/^\#\s*else/) {
my $tag_i = $#tag;
+ die "$file unmatched else\n" if $tag_i < 0;
while($tag[$tag_i] ne "-") {
my $t=$tag[$tag_i];
$tag{$t}= -$tag{$t};
@@ -599,6 +603,9 @@ sub do_defs
push(@tag,"TRUE");
$tag{"TRUE"}=-1;
print STDERR "DEBUG: $file: found 0\n" if $debug;
+ } elsif (/^\#\s*if\s+/) {
+ #Some other unrecognized "if" style
+ push(@tag,"-");
} elsif (/^\#\s*define\s+(\w+)\s+(\w+)/
&& $symhacking && $tag{'TRUE'} != -1) {
# This is for aliasing. When we find an alias,
@@ -875,6 +882,7 @@ sub do_defs
}
}
close(IN);
+ die "$file: Unmatched tags\n" if $#tag >= 0;
my $algs;
my $plays;