Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2021-08-23 08:01:53 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-08-23 08:08:48 +0300
commit0682af0d63a44b050d57bdaf7699e364a311d711 (patch)
treef45cc296d83a4c028fbd2a19f3ad241cb08c92d1 /source/blender/makesrna
parent62f2204d65ef52b5efc38cb3657f1f97fa73acd7 (diff)
RNA: add length augmented to RNA_string_get_alloc
This was noted as a TODO as it wraps RNA_property_string_get_alloc which takes a length return argument.
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r--source/blender/makesrna/RNA_access.h9
-rw-r--r--source/blender/makesrna/intern/rna_access.c25
2 files changed, 19 insertions, 15 deletions
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index f206bde4705..b943a8fad5a 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -1029,10 +1029,8 @@ void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *val
void RNA_property_string_set_bytes(PointerRNA *ptr, PropertyRNA *prop, const char *value, int len);
int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop);
void RNA_property_string_get_default(PointerRNA *ptr, PropertyRNA *prop, char *value);
-char *RNA_property_string_get_default_alloc(PointerRNA *ptr,
- PropertyRNA *prop,
- char *fixedbuf,
- int fixedlen);
+char *RNA_property_string_get_default_alloc(
+ PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen, int *r_len);
int RNA_property_string_default_length(PointerRNA *ptr, PropertyRNA *prop);
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop);
@@ -1238,7 +1236,8 @@ bool RNA_enum_icon_from_value(const EnumPropertyItem *item, int value, int *r_ic
bool RNA_enum_name_from_value(const EnumPropertyItem *item, int value, const char **r_name);
void RNA_string_get(PointerRNA *ptr, const char *name, char *value);
-char *RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen);
+char *RNA_string_get_alloc(
+ PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen, int *r_len);
int RNA_string_length(PointerRNA *ptr, const char *name);
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value);
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c
index 41c31dfebcb..c838032f1bb 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -3397,7 +3397,7 @@ char *RNA_property_string_get_alloc(
buf = fixedbuf;
}
else {
- buf = MEM_mallocN(sizeof(char) * (length + 1), "RNA_string_get_alloc");
+ buf = MEM_mallocN(sizeof(char) * (length + 1), __func__);
}
#ifndef NDEBUG
@@ -3537,10 +3537,8 @@ void RNA_property_string_get_default(PointerRNA *UNUSED(ptr), PropertyRNA *prop,
strcpy(value, sprop->defaultvalue);
}
-char *RNA_property_string_get_default_alloc(PointerRNA *ptr,
- PropertyRNA *prop,
- char *fixedbuf,
- int fixedlen)
+char *RNA_property_string_get_default_alloc(
+ PointerRNA *ptr, PropertyRNA *prop, char *fixedbuf, int fixedlen, int *r_len)
{
char *buf;
int length;
@@ -3553,11 +3551,15 @@ char *RNA_property_string_get_default_alloc(PointerRNA *ptr,
buf = fixedbuf;
}
else {
- buf = MEM_callocN(sizeof(char) * (length + 1), "RNA_string_get_alloc");
+ buf = MEM_callocN(sizeof(char) * (length + 1), __func__);
}
RNA_property_string_get_default(ptr, prop, buf);
+ if (r_len) {
+ *r_len = length;
+ }
+
return buf;
}
@@ -6587,15 +6589,18 @@ void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
}
}
-char *RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen)
+char *RNA_string_get_alloc(
+ PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen, int *r_len)
{
PropertyRNA *prop = RNA_struct_find_property(ptr, name);
if (prop) {
- /* TODO: pass length. */
- return RNA_property_string_get_alloc(ptr, prop, fixedbuf, fixedlen, NULL);
+ return RNA_property_string_get_alloc(ptr, prop, fixedbuf, fixedlen, r_len);
}
printf("%s: %s.%s not found.\n", __func__, ptr->type->identifier, name);
+ if (r_len != NULL) {
+ *r_len = 0;
+ }
return NULL;
}
@@ -8166,7 +8171,7 @@ bool RNA_property_reset(PointerRNA *ptr, PropertyRNA *prop, int index)
}
case PROP_STRING: {
- char *value = RNA_property_string_get_default_alloc(ptr, prop, NULL, 0);
+ char *value = RNA_property_string_get_default_alloc(ptr, prop, NULL, 0, NULL);
RNA_property_string_set(ptr, prop, value);
MEM_freeN(value);
return true;