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(-)
diff --git a/tools/ocaml/libs/xc/abi-check b/tools/ocaml/libs/xc/abi-check
index d532f37271..3cbdec582f 100755
--- a/tools/ocaml/libs/xc/abi-check
+++ b/tools/ocaml/libs/xc/abi-check
@@ -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) {
--
2.11.0
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel