Reproducable by opening the tree view, then maximizing the blob view,
move up, and then closing the blob view, causing the view->offset to
have "wrapped around" and nothing to be displayed in the tree view.
The invalid update of view->offset only happend when moving
non-displayed views. Instead use the checked scroll_steps variable
instead of the steps variable. Add a guarding assert after the update.
}
if (!view_is_displayed(view)) {
- view->offset += steps;
+ view->offset += scroll_steps;
+ assert(0 <= view->offset && view->offset < view->lines);
view->ops->select(view, &view->line[view->lineno]);
return;
}