diff --git a/src/asset.cpp b/src/asset.cpp index af21bd6..06e5b94 100644 --- a/src/asset.cpp +++ b/src/asset.cpp @@ -70,12 +70,11 @@ arenaAllocateBlock(memory_arena* arena, size_t block_size) return ret; } -#define MAX_NAME_LENGTH 256 char* -arenaCopyCStr(memory_arena* arena, const char* input) +arenaCopyCStr(memory_arena* arena, const char* input, u32 max_len) { u32 name_len = std::strlen(input) + 1; - assert(name_len < MAX_NAME_LENGTH); + assert(name_len < max_len); // TODO: make an arena alloc macro char* out = (char*) arenaAllocateBlock(arena, name_len); std::strncpy(out, input, name_len); @@ -207,10 +206,7 @@ initModel(Assets* assets, uint buf_count = t_mdl.bufferViews.size(); mdl->meshes = (mesh*) arenaAllocateBlock(arena, buf_count * sizeof(mesh)); mdl->num_meshes = t_mdl.meshes.size(); - uint name_len = std::strlen(filename); - assert(name_len < MAX_PATH_SIZE); - mdl->filepath = (char*) arenaAllocateBlock(arena, name_len + 1); - std::strncpy(mdl->filepath, filename, name_len); + mdl->filepath = arenaCopyCStr(arena, filename, MAX_PATH_SIZE); mdl->filepath_hash = utilFNV64a_str(mdl->filepath); return mdl; diff --git a/src/asset.h b/src/asset.h index 9a9cf1a..74646ac 100644 --- a/src/asset.h +++ b/src/asset.h @@ -35,7 +35,10 @@ uint arenaGetFreeSize(memory_arena* arena); void* arenaAllocateBlock(memory_arena* arena, size_t block_size); -char* arenaCopyCStr(memory_arena* arena, const char* input); +#define MAX_NAME_LENGTH 256 +char* arenaCopyCStr(memory_arena* arena, + const char* input, + u32 max_len = MAX_NAME_LENGTH); // NOTE: wrapper for stb_image struct util_image