[Bf-blender-cvs] [5987c4bc579] master: Render API: Support arbitrary length for custom image metadata fields

Lukas Stockner noreply at git.blender.org
Thu Nov 8 01:35:44 CET 2018


Commit: 5987c4bc579d865e96ccc6ee43789981fd4f106a
Author: Lukas Stockner
Date:   Thu Nov 8 01:05:55 2018 +0100
Branches: master
https://developer.blender.org/rB5987c4bc579d865e96ccc6ee43789981fd4f106a

Render API: Support arbitrary length for custom image metadata fields

===================================================================

M	source/blender/blenkernel/intern/image.c
M	source/blender/makesrna/intern/rna_render.c

===================================================================

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);
 }
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index 513717a9e46..b516accbf1e 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -801,7 +801,7 @@ static void rna_def_render_result(BlenderRNA *brna)
 	RNA_def_function_ui_description(func, "Add engine-specific stamp data to the result");
 	parm = RNA_def_string(func, "field", NULL, 1024, "Field", "Name of the stamp field to add");
 	RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
-	parm = RNA_def_string(func, "value", NULL, 1024, "Value", "Value of the stamp data");
+	parm = RNA_def_string(func, "value", NULL, 0, "Value", "Value of the stamp data");
 	RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
 
 	RNA_define_verify_sdna(0);



More information about the Bf-blender-cvs mailing list