Commit d9706f19 authored by Matt Caswell's avatar Matt Caswell
Browse files

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: default avatarRichard Levitte <levitte@openssl.org>
parent 0f2d3e4e
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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;