diff --git a/ui2abc/libarkts/native/src/common.cc b/ui2abc/libarkts/native/src/common.cc index 8f90679c074fdfb869356ca5904335174ae4bb3e..c484330b6df7a83155db9fdf30dd5160e491b314 100644 --- a/ui2abc/libarkts/native/src/common.cc +++ b/ui2abc/libarkts/native/src/common.cc @@ -56,8 +56,13 @@ StageArena::~StageArena() char* StageArena::strdup(const char* string) { - auto* arena = StageArena::instance(); auto size = strlen(string) + 1; + return strdup(string, size); +} + +char* strdup(const char* string, size_t size) +{ + auto* arena = StageArena::instance(); char* memory = (char*)arena->alloc(size); interop_memcpy(memory, size, string, size); return memory; diff --git a/ui2abc/libarkts/native/src/common.h b/ui2abc/libarkts/native/src/common.h index 0ee7cd1d7646c9b8d7f30dd3f69d1c9f0899a951..c26438256d9ff8111c32202ade9d3c55d410a4f6 100644 --- a/ui2abc/libarkts/native/src/common.h +++ b/ui2abc/libarkts/native/src/common.h @@ -126,8 +126,9 @@ class StageArena { } void* alloc(size_t size); static char* strdup(const char* original); + static char* strdup(const char* original, size_t size); void add(void* pointer); void cleanup(); }; -#endif // COMMON_H \ No newline at end of file +#endif // COMMON_H