From 9a50d15c7f87ec51316dfd83fe2622feeb7d2e26 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 6 Jun 2016 16:05:43 -0400 Subject: [PATCH] fix crashing bug in Pane when accessing dividers --- libs/gtkmm2ext/pane.cc | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/libs/gtkmm2ext/pane.cc b/libs/gtkmm2ext/pane.cc index aa8e7d142b..9f374c6714 100644 --- a/libs/gtkmm2ext/pane.cc +++ b/libs/gtkmm2ext/pane.cc @@ -402,14 +402,15 @@ Pane::set_divider (Dividers::size_type div, float fract) { Dividers::iterator d = dividers.begin(); - while (div--) { - ++d; - if (d == dividers.end()) { - /* caller is trying to set divider that does not exist - * yet. - */ - return; - } + for (d = dividers.begin(); d != dividers.end() && div != 0; ++d, --div) { + /* relax */ + } + + if (d == dividers.end()) { + /* caller is trying to set divider that does not exist + * yet. + */ + return; } fract = max (0.0f, min (1.0f, fract)); @@ -427,14 +428,15 @@ Pane::get_divider (Dividers::size_type div) { Dividers::iterator d = dividers.begin(); - while (div--) { - ++d; - if (d == dividers.end()) { - /* caller is trying to set divider that does not exist - * yet. - */ - return -1.0f; - } + for (d = dividers.begin(); d != dividers.end() && div != 0; ++d, --div) { + /* relax */ + } + + if (d == dividers.end()) { + /* caller is trying to set divider that does not exist + * yet. + */ + return -1.0f; } return (*d)->fract;