From 78edb249a982c656e885f3d7c50425cc1d2f335c Mon Sep 17 00:00:00 2001 From: cinnaboot Date: Mon, 13 Dec 2021 13:49:30 -0500 Subject: [PATCH] add arenaCopyCStr() utility function --- src/asset.cpp | 12 ++++++++++++ src/asset.h | 2 ++ src/shader.cpp | 5 +---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/asset.cpp b/src/asset.cpp index 4654d91..af21bd6 100644 --- a/src/asset.cpp +++ b/src/asset.cpp @@ -70,6 +70,18 @@ arenaAllocateBlock(memory_arena* arena, size_t block_size) return ret; } +#define MAX_NAME_LENGTH 256 +char* +arenaCopyCStr(memory_arena* arena, const char* input) +{ + u32 name_len = std::strlen(input) + 1; + assert(name_len < MAX_NAME_LENGTH); + // TODO: make an arena alloc macro + char* out = (char*) arenaAllocateBlock(arena, name_len); + std::strncpy(out, input, name_len); + return out; +} + // forward declarations void dumpNodes(tinygltf::Model t_mdl); diff --git a/src/asset.h b/src/asset.h index 6a5e2a0..9a9cf1a 100644 --- a/src/asset.h +++ b/src/asset.h @@ -35,6 +35,8 @@ uint arenaGetFreeSize(memory_arena* arena); void* arenaAllocateBlock(memory_arena* arena, size_t block_size); +char* arenaCopyCStr(memory_arena* arena, const char* input); + // NOTE: wrapper for stb_image struct util_image { diff --git a/src/shader.cpp b/src/shader.cpp index 3ed061b..a98319e 100644 --- a/src/shader.cpp +++ b/src/shader.cpp @@ -45,10 +45,7 @@ addShaderProgram(memory_arena* arena, shader_program* s = &gl_ctx->shaders[gl_ctx->num_shaders]; gl_ctx->num_shaders++; - - u32 name_len = std::strlen(name) + 1; - s->name = (char*) arenaAllocateBlock(arena, name_len); - std::strncpy(s->name, name, name_len); + s->name = arenaCopyCStr(arena, name); const u32 max_len = 256; std::string hash_str = vs;