From 93b68a9a4869cac3ec4927b35f29cac32e106832 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sun, 25 Apr 2021 22:02:11 +0100 Subject: RISC OS: Corewindow: Fix autoscroll segfault when pointer leaves window. --- frontends/riscos/corewindow.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'frontends/riscos/corewindow.c') diff --git a/frontends/riscos/corewindow.c b/frontends/riscos/corewindow.c index 921671217..88bb5c3ef 100644 --- a/frontends/riscos/corewindow.c +++ b/frontends/riscos/corewindow.c @@ -52,6 +52,8 @@ #define wimp_KEY_END wimp_KEY_COPY #endif +static struct ro_corewindow *ro_cw_drag_cw; + /** * Update a windows scrollbars. * @@ -255,6 +257,11 @@ static void ro_cw_mouse_at(wimp_pointer *pointer, void *data) (unsigned int)pointer->w); return; } + if (ro_cw != ro_cw_drag_cw) { + NSLOG(netsurf, DEEPDEBUG, "Called without drag window: %p", + ro_cw); + return; + } NSLOG(netsurf, INFO, "RO corewindow context %p", ro_cw); /* Not a Menu click. */ @@ -391,6 +398,7 @@ ro_cw_drag_start(struct ro_corewindow *ro_cw, ro_warn_user("WimpError", error->errmess); } + ro_cw_drag_cw = ro_cw; ro_mouse_drag_start(ro_cw_drag_end, ro_cw_mouse_at, NULL, NULL); } } @@ -1046,6 +1054,8 @@ ro_corewindow_init(struct ro_corewindow *ro_cw, } /* setup context for event handlers */ + NSLOG(netsurf, INFO, "Setting corewindow %p for window handle %p", + ro_cw, ro_cw->wh); ro_gui_wimp_event_set_user_data(ro_cw->wh, ro_cw); /* register wimp events. */ -- cgit v1.2.3