diff options
author | Lukas Stockner <lukas.stockner@freenet.de> | 2018-11-08 03:05:55 +0300 |
---|---|---|
committer | Lukas Stockner <lukas.stockner@freenet.de> | 2018-11-08 03:07:54 +0300 |
commit | 5987c4bc579d865e96ccc6ee43789981fd4f106a (patch) | |
tree | bbfd13e36ce8c66f03e056fbbed4dcf867548b74 /source/blender/blenkernel/intern/image.c | |
parent | 9ccb70f202e75353a102ef60ec688c05ab63dbd0 (diff) |
Render API: Support arbitrary length for custom image metadata fields
Diffstat (limited to 'source/blender/blenkernel/intern/image.c')
-rw-r--r-- | source/blender/blenkernel/intern/image.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index d01650e3204..1d209dec935 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -1612,7 +1612,7 @@ typedef struct StampDataCustomField { struct StampDataCustomField *next, *prev; /* TODO(sergey): Think of better size here, maybe dynamically allocated even. */ char key[512]; - char value[512]; + char *value; /* TODO(sergey): Support non-string values. */ } StampDataCustomField; @@ -2177,12 +2177,9 @@ void BKE_stamp_info_callback(void *data, struct StampData *stamp_data, StampCall CALL(rendertime, "RenderTime"); CALL(memory, "Memory"); - for (StampDataCustomField *custom_field = stamp_data->custom_fields.first; - custom_field != NULL; - custom_field = custom_field->next) - { + LISTBASE_FOREACH(StampDataCustomField *, custom_field, &stamp_data->custom_fields) { if (noskip || custom_field->value[0]) { - callback(data, custom_field->key, custom_field->value, sizeof(custom_field->value)); + callback(data, custom_field->key, custom_field->value, strlen(custom_field->value) + 1); } } @@ -2199,7 +2196,7 @@ void BKE_render_result_stamp_data(RenderResult *rr, const char *key, const char StampDataCustomField *field = MEM_mallocN(sizeof(StampDataCustomField), "StampData Custom Field"); STRNCPY(field->key, key); - STRNCPY(field->value, value); + field->value = BLI_strdup(value); BLI_addtail(&stamp_data->custom_fields, field); } @@ -2208,6 +2205,9 @@ void BKE_stamp_data_free(struct StampData *stamp_data) if (stamp_data == NULL) { return; } + LISTBASE_FOREACH(StampDataCustomField *, custom_field, &stamp_data->custom_fields) { + MEM_freeN(custom_field->value); + } BLI_freelistN(&stamp_data->custom_fields); MEM_freeN(stamp_data); } |