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:
authorBastien Montagne <montagne29@wanadoo.fr>2019-09-02 19:33:55 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-09-02 19:43:43 +0300
commit6f1fa7aa256d2acc4bc91ff459c369db55ff8a02 (patch)
tree0e22d429a9b7c55e436c85cb7129652941bf132e /source/blender/makesrna/intern/rna_access.c
parent1fd5c90e63b6306e070db090bd272eb4ec942f60 (diff)
Fix/enhance new RNA path from real ID helpers.
Main issue was that `rna_prepend_real_ID_path()` would return nothing in case given path was NULL, when it should actually return the `prefix` computed by `RNA_find_real_ID_and_path()` in that case... Also make return `real_id` pointer optionnal, no reasons to make it mandatory here. And some general naming fixes.
Diffstat (limited to 'source/blender/makesrna/intern/rna_access.c')
-rw-r--r--source/blender/makesrna/intern/rna_access.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c
index 531c2ef2003..61634a84d41 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -5794,15 +5794,23 @@ ID *RNA_find_real_ID_and_path(Main *bmain, ID *id, const char **r_path)
}
}
-static char *rna_prepend_real_ID_path(Main *bmain, ID *id, char *path, ID **r_real)
+static char *rna_prepend_real_ID_path(Main *bmain, ID *id, char *path, ID **r_real_id)
{
- if (path) {
- const char *prefix;
- char *new_path = NULL;
+ if (r_real_id != NULL) {
+ *r_real_id = NULL;
+ }
- *r_real = RNA_find_real_ID_and_path(bmain, id, &prefix);
+ const char *prefix;
+ ID *real_id = RNA_find_real_ID_and_path(bmain, id, &prefix);
+
+ if (r_real_id != NULL) {
+ *r_real_id = real_id;
+ }
- if (*r_real) {
+ if (path != NULL) {
+ char *new_path = NULL;
+
+ if (real_id) {
if (prefix[0]) {
new_path = BLI_sprintfN("%s%s%s", prefix, path[0] == '[' ? "" : ".", path);
}
@@ -5815,7 +5823,7 @@ static char *rna_prepend_real_ID_path(Main *bmain, ID *id, char *path, ID **r_re
return new_path;
}
else {
- return NULL;
+ return prefix[0] != '\0' ? BLI_strdup(prefix) : NULL;
}
}
@@ -5975,11 +5983,11 @@ char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop)
}
char *RNA_path_from_real_ID_to_property_index(
- Main *bmain, PointerRNA *ptr, PropertyRNA *prop, int index_dim, int index, ID **r_real)
+ Main *bmain, PointerRNA *ptr, PropertyRNA *prop, int index_dim, int index, ID **r_real_id)
{
char *path = RNA_path_from_ID_to_property_index(ptr, prop, index_dim, index);
- return rna_prepend_real_ID_path(bmain, ptr->owner_id, path, r_real);
+ return rna_prepend_real_ID_path(bmain, ptr->owner_id, path, r_real_id);
}
/**