scripts: Fix codegen infinite recursion
VkBaseInStructure and VkBaseOutStructure contain pointers to themselves.
Check for this case in object tracker and unique objects codegen so they
don't recursing infinitely.
diff --git a/scripts/object_tracker_generator.py b/scripts/object_tracker_generator.py
index 6a1fa19..abb6216 100644
--- a/scripts/object_tracker_generator.py
+++ b/scripts/object_tracker_generator.py
@@ -624,8 +624,9 @@
for member in struct_members:
if self.isHandleTypeObject(member.type):
return True
- elif member.type in struct_member_dict:
- if self.struct_contains_object(member.type) == True:
+ # recurse for member structs, guard against infinite recursion
+ elif member.type in struct_member_dict and member.type != struct_item:
+ if self.struct_contains_object(member.type):
return True
return False
#
diff --git a/scripts/unique_objects_generator.py b/scripts/unique_objects_generator.py
index e2c322a..e311adf 100644
--- a/scripts/unique_objects_generator.py
+++ b/scripts/unique_objects_generator.py
@@ -416,8 +416,9 @@
for member in struct_members:
if self.isHandleTypeNonDispatchable(member.type):
return True
- elif member.type in struct_member_dict:
- if self.struct_contains_ndo(member.type) == True:
+ # recurse for member structs, guard against infinite recursion
+ elif member.type in struct_member_dict and member.type != struct_item:
+ if self.struct_contains_ndo(member.type):
return True
return False
#