diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-09-11 12:33:00 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-09-11 15:16:36 +0300 |
commit | 3f5c54575f0cc4181b2b9fafb1cde2d1288ee506 (patch) | |
tree | 8206ff6ac0b5e972e4ea23e33d888c0934b3e944 /source/blender | |
parent | 309cd047ef46fcbd21b26b2509b40c55c5dab61e (diff) |
RNA: separate internal allocation function
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/makesrna/intern/makesrna.c | 29 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_internal.h | 5 |
2 files changed, 23 insertions, 11 deletions
diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 5aaddc30e07..968baca3517 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -409,23 +409,30 @@ static void rna_construct_wrapper_function_name( } } +void *rna_alloc_from_buffer(const char *buffer, int buffer_len) +{ + AllocDefRNA *alloc = MEM_callocN(sizeof(AllocDefRNA), "AllocDefRNA"); + alloc->mem = MEM_mallocN(buffer_len, __func__); + memcpy(alloc->mem, buffer, buffer_len); + rna_addtail(&DefRNA.allocs, alloc); + return alloc->mem; +} + +void *rna_calloc(int buffer_len) +{ + AllocDefRNA *alloc = MEM_callocN(sizeof(AllocDefRNA), "AllocDefRNA"); + alloc->mem = MEM_callocN(buffer_len, __func__); + rna_addtail(&DefRNA.allocs, alloc); + return alloc->mem; +} + static char *rna_alloc_function_name(const char *structname, const char *propname, const char *type) { - AllocDefRNA *alloc; char buffer[2048]; - char *result; - rna_construct_function_name(buffer, sizeof(buffer), structname, propname, type); - result = MEM_callocN(sizeof(char) * strlen(buffer) + 1, "rna_alloc_function_name"); - strcpy(result, buffer); - - alloc = MEM_callocN(sizeof(AllocDefRNA), "AllocDefRNA"); - alloc->mem = result; - rna_addtail(&DefRNA.allocs, alloc); - - return result; + return rna_alloc_from_buffer(buffer, strlen(buffer) + 1); } static StructRNA *rna_find_struct(const char *identifier) diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index fa13c56e4fa..28e2b63388a 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -543,6 +543,11 @@ PointerRNA rna_array_lookup_int( /* Duplicated code since we can't link in blenlib */ +#ifndef RNA_RUNTIME +void *rna_alloc_from_buffer(const char *buffer, int buffer_len); +void *rna_calloc(int buffer_len); +#endif + void rna_addtail(struct ListBase *listbase, void *vlink); void rna_freelinkN(struct ListBase *listbase, void *vlink); void rna_freelistN(struct ListBase *listbase); |