From 98a78963be78c1dfd02e1930e2db72deca121d1a Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Thu, 18 Sep 2014 15:58:37 +0200 Subject: [PATCH] Fix crashes with timers. Incorrectly accessing the menu pointer, set it to NULL before doing the tests. We don't restore the menu pointer because it is invalid by the time the operator ends. --- source/blender/windowmanager/intern/wm_operators.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index bc79879f1f4..523eeb380aa 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -4354,6 +4354,7 @@ static void redraw_timer_window_swap(bContext *C) { wmWindow *win = CTX_wm_window(C); ScrArea *sa; + CTX_wm_menu_set(C, NULL); for (sa = CTX_wm_screen(C)->areabase.first; sa; sa = sa->next) ED_area_tag_redraw(sa); @@ -4392,7 +4393,8 @@ static int redraw_timer_exec(bContext *C, wmOperator *op) } else if (type == 1) { wmWindow *win = CTX_wm_window(C); - + CTX_wm_menu_set(C, NULL); + ED_region_tag_redraw(ar); wm_draw_update(C); @@ -4405,6 +4407,8 @@ static int redraw_timer_exec(bContext *C, wmOperator *op) ScrArea *sa_back = CTX_wm_area(C); ARegion *ar_back = CTX_wm_region(C); + CTX_wm_menu_set(C, NULL); + for (sa = CTX_wm_screen(C)->areabase.first; sa; sa = sa->next) { ARegion *ar_iter; CTX_wm_area_set(C, sa);