locitest: prevent recursion when generating/checking lists
Until now we haven't had a cycle in the protocol.
diff --git a/c_gen/c_test_gen.py b/c_gen/c_test_gen.py
index 07959b4..5342a42 100644
--- a/c_gen/c_test_gen.py
+++ b/c_gen/c_test_gen.py
@@ -1056,8 +1056,15 @@
out.write("""
of_object_t elt;
int cur_len = 0;
+ static int recursion;
(void) elt;
(void) cur_len;
+
+ if (recursion > 0) {
+ return value;
+ }
+
+ recursion++;
""" % dict(cls=cls, base_type=base_type))
sub_classes = type_maps.sub_class_map(base_type, version)
@@ -1082,6 +1089,7 @@
for instance, subcls in sub_classes:
setup_instance(out, cls, subcls, instance, v_name, version)
out.write("""
+ recursion--;
return value;
}
""")
@@ -1103,6 +1111,13 @@
of_object_t elt;
int count = 0;
int rv;
+ static int recursion;
+
+ if (recursion > 0) {
+ return value;
+ }
+
+ recursion++;
""" % dict(cls=cls, base_type=base_type))
@@ -1171,6 +1186,7 @@
of_object_delete((of_object_t *)dup);
}
+ recursion--;
return value;
}
""" % dict(cls=cls, u_cls=cls.upper(), entry_count=entry_count))