summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHai Nguyen <379079+chaoticbob@users.noreply.github.com>2021-01-05 21:19:05 -0500
committerGitHub <noreply@github.com>2021-01-05 21:19:05 -0500
commit7b936c61ac9f00b37b9a35cecbbdb0966e9c7022 (patch)
treef0b0a7123abab71fbd7a4e4c04619ee749d46daf
parentbd64d605bcfc6d12b5fe652c014d21990963aed2 (diff)
parentb568e0e9674d2109c32fd3f51e96b6d7a018b90d (diff)
downloadSPIRV-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.c28
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;
}
}