[Bf-blender-cvs] [06f937c] asset-engine: Fix nasty hidden RNA/bool related bug.
Bastien Montagne
noreply at git.blender.org
Thu Sep 10 14:35:27 CEST 2015
Commit: 06f937c9b1653388ed77b24b62e0867279af3b81
Author: Bastien Montagne
Date: Thu Sep 10 14:08:36 2015 +0200
Branches: asset-engine
https://developer.blender.org/rB06f937c9b1653388ed77b24b62e0867279af3b81
Fix nasty hidden RNA/bool related bug.
**NEVER** pass a boolean as address (pointer) to a RNA property function - it will read (or write) it as an integer!
===================================================================
M source/blender/makesrna/intern/rna_asset.c
===================================================================
diff --git a/source/blender/makesrna/intern/rna_asset.c b/source/blender/makesrna/intern/rna_asset.c
index f8755a1..51aaec5 100644
--- a/source/blender/makesrna/intern/rna_asset.c
+++ b/source/blender/makesrna/intern/rna_asset.c
@@ -427,7 +427,7 @@ static bool rna_ae_load_pre(AssetEngine *engine, AssetUUIDList *uuids, struct Fi
parm = RNA_function_find_parameter(NULL, func, "success_return");
RNA_parameter_get(&list, parm, &ret);
- ret_success = (bool)*(int *)ret;
+ ret_success = ((*(int *)ret) != 0);
RNA_parameter_list_free(&list);
@@ -446,20 +446,23 @@ static bool rna_ae_sort_filter(
void *ret;
bool ret_changed;
+ /* **Never** pass address of a bool for a bool prop! will be read as an int... */
+ const int use_sort_i = (int)use_sort;
+ const int use_filter_i = (int)use_filter;
RNA_pointer_create(NULL, engine->type->ext.srna, engine, &ptr);
func = &rna_AssetEngine_sort_filter_func;
RNA_parameter_list_create(&list, &ptr, func);
- RNA_parameter_set_lookup(&list, "use_sort", &use_sort);
- RNA_parameter_set_lookup(&list, "use_filter", &use_filter);
+ RNA_parameter_set_lookup(&list, "use_sort", &use_sort_i);
+ RNA_parameter_set_lookup(&list, "use_filter", &use_filter_i);
RNA_parameter_set_lookup(&list, "params", ¶ms);
RNA_parameter_set_lookup(&list, "entries", &entries_r);
engine->type->ext.call(NULL, &ptr, func, &list);
parm = RNA_function_find_parameter(NULL, func, "changed_return");
RNA_parameter_get(&list, parm, &ret);
- ret_changed= *(bool *)ret;
+ ret_changed = ((*(int *)ret) != 0);
RNA_parameter_list_free(&list);
@@ -489,7 +492,7 @@ static bool rna_ae_entries_block_get(
parm = RNA_function_find_parameter(NULL, func, "success_return");
RNA_parameter_get(&list, parm, &ret);
- ret_success= *(bool *)ret;
+ ret_success = ((*(int *)ret) != 0);
RNA_parameter_list_free(&list);
@@ -518,7 +521,7 @@ static bool rna_ae_entries_uuid_get(
parm = RNA_function_find_parameter(NULL, func, "success_return");
RNA_parameter_get(&list, parm, &ret);
- ret_success= *(bool *)ret;
+ ret_success = ((*(int *)ret) != 0);
RNA_parameter_list_free(&list);
More information about the Bf-blender-cvs
mailing list