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:
authorJulian Eisel <julian@blender.org>2020-08-19 13:32:11 +0300
committerJulian Eisel <julian@blender.org>2020-08-19 13:37:59 +0300
commit5cc08510e0a636ea99eb753cb0ff65861d5e4813 (patch)
tree667463aca1ed00983f419e8648ba92fc1222a832 /source/blender/makesrna/intern
parent8cbfc4c76ed7747111e387863ad511939d389d87 (diff)
RNA: Validate scene/view-layer combination for statistics query
Users may input an invalid scene/view-layer combination via Python. We can easily detect that and fail gracefully. Besides checking input parameters in RNA, also assert the scene/view-layer combination is valid in lower level Depsgraph lookup function (called by statistics query).
Diffstat (limited to 'source/blender/makesrna/intern')
-rw-r--r--source/blender/makesrna/intern/rna_scene.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 0936995429c..3ec7963a81e 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -926,8 +926,18 @@ static void rna_Scene_volume_update(Main *UNUSED(bmain), Scene *UNUSED(scene), P
static const char *rna_Scene_statistics_string_get(Scene *scene,
Main *bmain,
+ ReportList *reports,
ViewLayer *view_layer)
{
+ if (BKE_scene_find_from_view_layer(bmain, view_layer) != scene) {
+ BKE_reportf(reports,
+ RPT_ERROR,
+ "View Layer '%s' not found in scene '%s'",
+ view_layer->name,
+ scene->id.name + 2);
+ return "";
+ }
+
return ED_info_statistics_string(bmain, scene, view_layer);
}
@@ -7680,7 +7690,7 @@ void RNA_def_scene(BlenderRNA *brna)
/* Statistics */
func = RNA_def_function(srna, "statistics", "rna_Scene_statistics_string_get");
- RNA_def_function_flag(func, FUNC_USE_MAIN);
+ RNA_def_function_flag(func, FUNC_USE_MAIN | FUNC_USE_REPORTS);
parm = RNA_def_pointer(func, "view_layer", "ViewLayer", "View Layer", "");
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
parm = RNA_def_string(func, "statistics", NULL, 0, "Statistics", "");