diff options
| author | Tobin Ehlis <tobine@google.com> | 2016-01-29 09:24:46 -0700 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2016-01-29 11:21:03 -0700 |
| commit | 7b69f0ebefd1f256f7c67b814169057f0134849a (patch) | |
| tree | 8222d0b47aa4b4494b7c98a1ec51686ed32b7566 | |
| parent | b090e4f08947bfc3719f1c74f5d3a3bb55197a98 (diff) | |
| download | usermoji-7b69f0ebefd1f256f7c67b814169057f0134849a.tar.xz | |
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.
| -rwxr-xr-x | vk-layer-generate.py | 8 |
1 files changed, 7 insertions, 1 deletions
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) |
