summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-06-06 16:05:43 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-06-06 16:05:43 -0400
commit9a50d15c7f87ec51316dfd83fe2622feeb7d2e26 (patch)
tree837e05c92fae38bbd7f2e2fc9b82669f36907080 /libs/gtkmm2ext
parent5700296cb66c1ebf16903b9baa8883395779a7fd (diff)
fix crashing bug in Pane when accessing dividers
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r--libs/gtkmm2ext/pane.cc34
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;