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>2017-08-11 12:09:03 +0300
committerCampbell Barton <ideasman42@gmail.com>2017-08-11 12:10:19 +0300
commitbc88ee329256d903308e67071c2edc2c8f32376d (patch)
tree2905a9a0687b6400ccfdc8a721f9d5fc3be9ef37 /source/blender/makesrna/intern/rna_define.c
parentd5d626df236b17c2d4ac731b2aaace52a2611304 (diff)
Error in last commit, problems with unregister
We can't free the identifier before its used when removing from the ghash.
Diffstat (limited to 'source/blender/makesrna/intern/rna_define.c')
-rw-r--r--source/blender/makesrna/intern/rna_define.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c
index 5a1aec59362..0f8bc19bd6c 100644
--- a/source/blender/makesrna/intern/rna_define.c
+++ b/source/blender/makesrna/intern/rna_define.c
@@ -145,8 +145,25 @@ static void rna_brna_structs_add(BlenderRNA *brna, StructRNA *srna)
if (srna->identifier[0] != '\0') {
BLI_ghash_insert(brna->structs_map, (void *)srna->identifier, srna);
}
+}
+
+#ifdef RNA_RUNTIME
+static void rna_brna_structs_remove_and_free(BlenderRNA *brna, StructRNA *srna)
+{
+ if (brna->structs_map) {
+ if (srna->identifier[0] != '\0') {
+ BLI_ghash_remove(brna->structs_map, (void *)srna->identifier, NULL, NULL);
+ }
+ }
+
+ RNA_def_struct_free_pointers(srna);
+ if (srna->flag & STRUCT_RUNTIME) {
+ rna_freelinkN(&brna->structs, srna);
+ }
+ brna->structs_len -= 1;
}
+#endif
StructDefRNA *rna_find_struct_def(StructRNA *srna)
{
@@ -655,10 +672,8 @@ void RNA_struct_free(BlenderRNA *brna, StructRNA *srna)
rna_freelinkN(&srna->functions, func);
}
- RNA_def_struct_free_pointers(srna);
- if (srna->flag & STRUCT_RUNTIME)
- rna_freelinkN(&brna->structs, srna);
+ rna_brna_structs_remove_and_free(brna, srna);
#else
UNUSED_VARS(brna, srna);
#endif