From 50734030aaf7ae43809e842b3f7cfcabca598a9e Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 21 Dec 2009 18:20:18 +0000 Subject: (svn r18593) -Fix: GetWidget call case similar to r18591 --- src/widget.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/widget.cpp b/src/widget.cpp index a4c2338dd..e403b20c8 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -2090,7 +2090,11 @@ Scrollbar *NWidgetLeaf::FindScrollbar(Window *w, bool allow_next) const if (this->type == WWT_SCROLL2BAR) return &w->vscroll2; if (this->index >= 0 && allow_next && (uint)(this->index) + 1 < w->nested_array_size) { - const NWidgetCore *next_wid = w->GetWidget(this->index + 1); + /* GetWidget ensures that the widget is of the given type. + * As we might have cases where the next widget in the array + * is a non-Core widget (e.g. NWID_SELECTION) we first get + * the base class and then dynamic_cast that. */ + const NWidgetCore *next_wid = dynamic_cast(w->GetWidget(this->index + 1)); if (next_wid != NULL) return next_wid->FindScrollbar(w, false); } return NULL; -- cgit v1.2.3-54-g00ecf