diff options
author | Petr Kraus <petr_kraus@email.cz> | 2019-08-18 16:22:59 +0200 |
---|---|---|
committer | Mark Lobodzinski <mark@lunarg.com> | 2019-08-22 09:42:27 -0600 |
commit | 956e9716a0a1ef423c36532a7bdcecbb668ef583 (patch) | |
tree | 1b0d7e0f56636be76f1f41c9b8f56f5ecbf10f8d /scripts | |
parent | 08d510661c5c9a141dfc7b01e2c5484b3165a8f2 (diff) | |
download | vulkan-validation-layers-956e9716a0a1ef423c36532a7bdcecbb668ef583.tar.gz |
layers: Eliminate const_cast in safe_struct string
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/helper_file_generator.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/scripts/helper_file_generator.py b/scripts/helper_file_generator.py index 288cc0c0a..638a51765 100644 --- a/scripts/helper_file_generator.py +++ b/scripts/helper_file_generator.py @@ -460,7 +460,7 @@ class HelperFileOutputGenerator(OutputGenerator): safe_struct_helper_header += 'void *SafePnextCopy(const void *pNext);\n' safe_struct_helper_header += 'void FreePnextChain(const void *head);\n' safe_struct_helper_header += 'void FreePnextChain(void *head);\n' - safe_struct_helper_header += 'const char *SafeStringCopy(const char *in_string);\n' + safe_struct_helper_header += 'char *SafeStringCopy(const char *in_string);\n' safe_struct_helper_header += '\n' safe_struct_helper_header += self.GenerateSafeStructHeader() return safe_struct_helper_header @@ -877,7 +877,7 @@ class HelperFileOutputGenerator(OutputGenerator): # Construct Safe-struct helper functions string_copy_proc = '\n\n' - string_copy_proc += 'const char *SafeStringCopy(const char *in_string) {\n' + string_copy_proc += 'char *SafeStringCopy(const char *in_string) {\n' string_copy_proc += ' if (nullptr == in_string) return nullptr;\n' string_copy_proc += ' char* dest = new char[std::strlen(in_string) + 1];\n' string_copy_proc += ' return std::strcpy(dest, in_string);\n' @@ -1250,10 +1250,11 @@ class HelperFileOutputGenerator(OutputGenerator): if m_type == 'char': # Create deep copies of strings if member.len: - copy_strings += ' %s = new char *[in_struct->%s];\n' % (member.name, member.len) + copy_strings += ' char **tmp_%s = new char *[in_struct->%s];\n' % (member.name, member.len) copy_strings += ' for (uint32_t i = 0; i < %s; ++i) {\n' % member.len - copy_strings += ' (const_cast<const char **>(%s))[i] = SafeStringCopy(in_struct->%s[i]);\n' % (member.name, member.name) + copy_strings += ' tmp_%s[i] = SafeStringCopy(in_struct->%s[i]);\n' % (member.name, member.name) copy_strings += ' }\n' + copy_strings += ' %s = tmp_%s;\n' % (member.name, member.name) destruct_txt += ' if (%s) {\n' % member.name destruct_txt += ' for (uint32_t i = 0; i < %s; ++i) {\n' % member.len |