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-10-15 09:48:51 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-10-15 09:52:01 +0300
commitd649b4b066f48bde3b8eee30c5a401164849e430 (patch)
tree21d860c40baf0df6d39003da8fdd183b18450116 /source/blender/windowmanager/intern/wm_operators.c
parent9a76dd2454c2d6f84e4f15c0235669b317599fbd (diff)
Fix crash using menu search without an active area
Diffstat (limited to 'source/blender/windowmanager/intern/wm_operators.c')
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c82
1 files changed, 42 insertions, 40 deletions
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index dff8e72a5fe..0e58e1c0466 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -543,50 +543,52 @@ static const char *wm_context_member_from_ptr(const bContext *C,
case ID_SCR: {
CTX_TEST_PTR_ID(C, "screen", ptr->owner_id);
- SpaceLink *space_data = CTX_wm_space_data(C);
-
- TEST_PTR_DATA_TYPE("space_data", RNA_Space, ptr, space_data);
TEST_PTR_DATA_TYPE("area", RNA_Area, ptr, CTX_wm_area(C));
TEST_PTR_DATA_TYPE("region", RNA_Region, ptr, CTX_wm_region(C));
- switch (space_data->spacetype) {
- case SPACE_VIEW3D: {
- const View3D *v3d = (View3D *)space_data;
- const View3DShading *shading = &v3d->shading;
+ SpaceLink *space_data = CTX_wm_space_data(C);
+ if (space_data != NULL) {
+ TEST_PTR_DATA_TYPE("space_data", RNA_Space, ptr, space_data);
- TEST_PTR_DATA_TYPE("space_data.overlay", RNA_View3DOverlay, ptr, v3d);
- TEST_PTR_DATA_TYPE("space_data.shading", RNA_View3DShading, ptr, shading);
- break;
- }
- case SPACE_GRAPH: {
- const SpaceGraph *sipo = (SpaceGraph *)space_data;
- const bDopeSheet *ads = sipo->ads;
- TEST_PTR_DATA_TYPE("space_data.dopesheet", RNA_DopeSheet, ptr, ads);
- break;
- }
- case SPACE_FILE: {
- const SpaceFile *sfile = (SpaceFile *)space_data;
- const FileSelectParams *params = ED_fileselect_get_active_params(sfile);
- TEST_PTR_DATA_TYPE("space_data.params", RNA_FileSelectParams, ptr, params);
- break;
- }
- case SPACE_IMAGE: {
- const SpaceImage *sima = (SpaceImage *)space_data;
- TEST_PTR_DATA_TYPE("space_data.overlay", RNA_SpaceImageOverlay, ptr, sima);
- TEST_PTR_DATA_TYPE("space_data.uv_editor", RNA_SpaceUVEditor, ptr, sima);
- break;
- }
- case SPACE_NLA: {
- const SpaceNla *snla = (SpaceNla *)space_data;
- const bDopeSheet *ads = snla->ads;
- TEST_PTR_DATA_TYPE("space_data.dopesheet", RNA_DopeSheet, ptr, ads);
- break;
- }
- case SPACE_ACTION: {
- const SpaceAction *sact = (SpaceAction *)space_data;
- const bDopeSheet *ads = &sact->ads;
- TEST_PTR_DATA_TYPE("space_data.dopesheet", RNA_DopeSheet, ptr, ads);
- break;
+ switch (space_data->spacetype) {
+ case SPACE_VIEW3D: {
+ const View3D *v3d = (View3D *)space_data;
+ const View3DShading *shading = &v3d->shading;
+
+ TEST_PTR_DATA_TYPE("space_data.overlay", RNA_View3DOverlay, ptr, v3d);
+ TEST_PTR_DATA_TYPE("space_data.shading", RNA_View3DShading, ptr, shading);
+ break;
+ }
+ case SPACE_GRAPH: {
+ const SpaceGraph *sipo = (SpaceGraph *)space_data;
+ const bDopeSheet *ads = sipo->ads;
+ TEST_PTR_DATA_TYPE("space_data.dopesheet", RNA_DopeSheet, ptr, ads);
+ break;
+ }
+ case SPACE_FILE: {
+ const SpaceFile *sfile = (SpaceFile *)space_data;
+ const FileSelectParams *params = ED_fileselect_get_active_params(sfile);
+ TEST_PTR_DATA_TYPE("space_data.params", RNA_FileSelectParams, ptr, params);
+ break;
+ }
+ case SPACE_IMAGE: {
+ const SpaceImage *sima = (SpaceImage *)space_data;
+ TEST_PTR_DATA_TYPE("space_data.overlay", RNA_SpaceImageOverlay, ptr, sima);
+ TEST_PTR_DATA_TYPE("space_data.uv_editor", RNA_SpaceUVEditor, ptr, sima);
+ break;
+ }
+ case SPACE_NLA: {
+ const SpaceNla *snla = (SpaceNla *)space_data;
+ const bDopeSheet *ads = snla->ads;
+ TEST_PTR_DATA_TYPE("space_data.dopesheet", RNA_DopeSheet, ptr, ads);
+ break;
+ }
+ case SPACE_ACTION: {
+ const SpaceAction *sact = (SpaceAction *)space_data;
+ const bDopeSheet *ads = &sact->ads;
+ TEST_PTR_DATA_TYPE("space_data.dopesheet", RNA_DopeSheet, ptr, ads);
+ break;
+ }
}
}