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;