13
0

fix crashing bug in Pane when accessing dividers

This commit is contained in:
Paul Davis 2016-06-06 16:05:43 -04:00
parent 5700296cb6
commit 9a50d15c7f

View File

@ -402,15 +402,16 @@ Pane::set_divider (Dividers::size_type div, float fract)
{ {
Dividers::iterator d = dividers.begin(); Dividers::iterator d = dividers.begin();
while (div--) { for (d = dividers.begin(); d != dividers.end() && div != 0; ++d, --div) {
++d; /* relax */
}
if (d == dividers.end()) { if (d == dividers.end()) {
/* caller is trying to set divider that does not exist /* caller is trying to set divider that does not exist
* yet. * yet.
*/ */
return; return;
} }
}
fract = max (0.0f, min (1.0f, fract)); fract = max (0.0f, min (1.0f, fract));
@ -427,15 +428,16 @@ Pane::get_divider (Dividers::size_type div)
{ {
Dividers::iterator d = dividers.begin(); Dividers::iterator d = dividers.begin();
while (div--) { for (d = dividers.begin(); d != dividers.end() && div != 0; ++d, --div) {
++d; /* relax */
}
if (d == dividers.end()) { if (d == dividers.end()) {
/* caller is trying to set divider that does not exist /* caller is trying to set divider that does not exist
* yet. * yet.
*/ */
return -1.0f; return -1.0f;
} }
}
return (*d)->fract; return (*d)->fract;
} }