diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-06 16:05:43 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-06 16:05:43 -0400 |
commit | 9a50d15c7f87ec51316dfd83fe2622feeb7d2e26 (patch) | |
tree | 837e05c92fae38bbd7f2e2fc9b82669f36907080 /libs/gtkmm2ext | |
parent | 5700296cb66c1ebf16903b9baa8883395779a7fd (diff) |
fix crashing bug in Pane when accessing dividers
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r-- | libs/gtkmm2ext/pane.cc | 34 |
1 files 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; |