From 2339beae2e86a99030eda31818744ea23917ed1f Mon Sep 17 00:00:00 2001 From: Mike Schuchardt Date: Mon, 4 Sep 2017 11:38:42 -0600 Subject: scripts: Fix VkShaderModuleCreateInfo safe struct Allocate and copy the entire shader program instead of just the first 4 bytes. Change-Id: I24dd136d59952f9e8b690bf4fe1702106482a3be --- scripts/helper_file_generator.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'scripts') diff --git a/scripts/helper_file_generator.py b/scripts/helper_file_generator.py index f486a8d7..a9d9390f 100644 --- a/scripts/helper_file_generator.py +++ b/scripts/helper_file_generator.py @@ -787,7 +787,15 @@ class HelperFileOutputGenerator(OutputGenerator): ' break;\n' ' default:\n' ' break;\n' + ' }\n', + 'VkShaderModuleCreateInfo' : + ' if (in_struct->pCode) {\n' + ' pCode = reinterpret_cast(new uint8_t[codeSize]);\n' + ' memcpy((void *)pCode, (void *)in_struct->pCode, codeSize);\n' ' }\n'} + custom_destruct_txt = {'VkShaderModuleCreateInfo' : + ' if (pCode)\n' + ' delete[] reinterpret_cast(pCode);\n' } for member in item.members: m_type = member.type @@ -864,6 +872,8 @@ class HelperFileOutputGenerator(OutputGenerator): init_list = init_list[:-1] # hack off final comma if item.name in custom_construct_txt: construct_txt = custom_construct_txt[item.name] + if item.name in custom_destruct_txt: + destruct_txt = custom_destruct_txt[item.name] safe_struct_body.append("\n%s::%s(const %s* in_struct) :%s\n{\n%s}" % (ss_name, ss_name, item.name, init_list, construct_txt)) if '' != default_init_list: default_init_list = " :%s" % (default_init_list[:-1]) -- cgit v1.2.3