@@ -70,14 +70,7 @@ my $cval;
$ei = undef;
my $bitnum = 0;
while (<OCAML_FILE>) {
- if (!$ei) {
- if (m{^type \s+ (\w+) \s* \= \s* $}x && $enums{$1}) {
- print "// found ocaml type $1 at $o:$.\n" or die $!;
- $ei = $enums{$1};
- $cval = '';
- $bitnum = 0;
- }
- } else {
+ if ($ei) {
if (m{^\s+ \| \s* $ei->{OPrefix} (\w+) \s*$}x) {
$cval = $1;
if ($ei->{Mangle} eq 'lc') {
@@ -104,6 +97,14 @@ while (<OCAML_FILE>) {
die "$_ ?";
}
}
+ if (!$ei) {
+ if (m{^type \s+ (\w+) \s* \= \s* $}x && $enums{$1}) {
+ print "// found ocaml type $1 at $o:$.\n" or die $!;
+ $ei = $enums{$1};
+ $cval = '';
+ $bitnum = 0;
+ }
+ }
}
foreach $ei (values %enums) {
If the end of one enum is the `type' line for the next enum, we would not notice it. Fix this by reordering the code, and getting rid of the else: now if the "we are within an enum" branch decides that it's the end of the enum, it unsets $ei and we then immediately process the line as a "not within an enum" line - ie as the start of the next one. Reported-by: Paul Durrant <paul.durrant@citrix.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> --- tools/ocaml/libs/xc/abi-check | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-)