From 7b69f0ebefd1f256f7c67b814169057f0134849a Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Fri, 29 Jan 2016 09:24:46 -0700 Subject: layers: MR181/GL102 Fix unique_objects to correctly assign local vars under ptrs If a variable that needs to be restored is below a ptr, then need to declare it at the top level, but only assign it if the ptr(s) that it's below are non-null. --- vk-layer-generate.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/vk-layer-generate.py b/vk-layer-generate.py index e72a9a54..b0235f0f 100755 --- a/vk-layer-generate.py +++ b/vk-layer-generate.py @@ -2120,7 +2120,13 @@ class UniqueObjectsSubcommand(Subcommand): indent = indent[4:] pre_code += '%s}\n' % (indent) if not first_level_param: # embedded in a ptr/struct so need to undo the update - decls += ' %s local_%s = %s%s;\n' % (struct_uses[obj], name, prefix, name) + if '->' in prefix: + # Since this variable is embedded under a ptr, need to decl up front, but wait + # to assign it inside of the "if" block(s) for surrounding ptr(s) + decls += ' %s local_%s = VK_NULL_HANDLE;\n' % (struct_uses[obj], name) + pre_code = '%slocal_%s = %s%s;\n%s' % (indent, name, prefix, name, pre_code) + else: + decls += ' %s local_%s = %s%s;\n' % (struct_uses[obj], name, prefix, name) post_code += '%sif (%s%s) {\n' %(indent, prefix, name) post_code += '%s %s* p%s = (%s*)%s%s%s;\n' % (indent, struct_uses[obj], name, struct_uses[obj], deref_txt, prefix, name) post_code += '%s *p%s = local_%s;\n' % (indent, name, name) -- cgit v1.2.3