diff options
author | Hai Nguyen <379079+chaoticbob@users.noreply.github.com> | 2021-01-05 21:19:05 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-05 21:19:05 -0500 |
commit | 7b936c61ac9f00b37b9a35cecbbdb0966e9c7022 (patch) | |
tree | f0b0a7123abab71fbd7a4e4c04619ee749d46daf | |
parent | bd64d605bcfc6d12b5fe652c014d21990963aed2 (diff) | |
parent | b568e0e9674d2109c32fd3f51e96b6d7a018b90d (diff) | |
download | SPIRV-Reflect-7b936c61ac9f00b37b9a35cecbbdb0966e9c7022.tar.gz |
Merge pull request #107 from Sixshaman/master
Fixes for compiling in Windows without _CRT_SECURE_NO_WARNINGS
-rw-r--r-- | spirv_reflect.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/spirv_reflect.c b/spirv_reflect.c index 882cd7b..87b3001 100644 --- a/spirv_reflect.c +++ b/spirv_reflect.c @@ -656,13 +656,20 @@ static SpvReflectResult ParseNodes(Parser* p_parser) } if (p_node->word_count >= 5) { const char* p_source = (const char*)(p_parser->spirv_code + p_node->word_offset + 4); - char* p_source_temp = (char*)calloc(strlen(p_source) + 1, sizeof(char*)); + + const size_t source_len = strlen(p_source); + char* p_source_temp = (char*)calloc(source_len + 1, sizeof(char*)); if (IsNull(p_source_temp)) { return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED; } + #ifdef _WIN32 + strcpy_s(p_source_temp, source_len + 1, p_source); + #else strcpy(p_source_temp, p_source); + #endif + p_parser->source_embedded = p_source_temp; } } @@ -670,14 +677,23 @@ static SpvReflectResult ParseNodes(Parser* p_parser) case SpvOpSourceContinued: { const char* p_source = (const char*)(p_parser->spirv_code + p_node->word_offset + 1); - char* p_continued_source = (char*)calloc(strlen(p_source) + strlen(p_parser->source_embedded) + 1, sizeof(char*)); + + const size_t source_len = strlen(p_source); + const size_t embedded_source_len = strlen(p_parser->source_embedded); + char* p_continued_source = (char*)calloc(source_len + embedded_source_len + 1, sizeof(char*)); if (IsNull(p_continued_source)) { return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED; } + #ifdef _WIN32 + strcpy_s(p_continued_source, embedded_source_len + 1, p_parser->source_embedded); + strcat_s(p_continued_source, source_len + 1, p_source); + #else strcpy(p_continued_source, p_parser->source_embedded); strcat(p_continued_source, p_source); + #endif + SafeFree(p_parser->source_embedded); p_parser->source_embedded = p_continued_source; } @@ -950,13 +966,19 @@ static SpvReflectResult ParseSource(Parser* p_parser, SpvReflectShaderModule* p_ //Source code if (IsNotNull(p_parser->source_embedded)) { - char* p_source = (char*)calloc(strlen(p_parser->source_embedded) + 1, sizeof(char*)); + const size_t source_len = strlen(p_parser->source_embedded); + char* p_source = (char*)calloc(source_len + 1, sizeof(char*)); if (IsNull(p_source)) { return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED; } + #ifdef _WIN32 + strcpy_s(p_source, source_len + 1, p_parser->source_embedded); + #else strcpy(p_source, p_parser->source_embedded); + #endif + p_module->source_source = p_source; } } |