diff --git a/repos/gems/src/server/terminal/framebuffer.h b/repos/gems/src/server/terminal/framebuffer.h index 472fce62e8..20ef44570f 100644 --- a/repos/gems/src/server/terminal/framebuffer.h +++ b/repos/gems/src/server/terminal/framebuffer.h @@ -83,7 +83,8 @@ class Terminal::Framebuffer * the old (possibly too small) dataspace. */ _mode = _fb.mode(); - _ds.construct(_env.rm(), _fb.dataspace()); + if (_mode.width() && _mode.height()) + _ds.construct(_env.rm(), _fb.dataspace()); } }; diff --git a/repos/gems/src/server/terminal/main.cc b/repos/gems/src/server/terminal/main.cc index cfe3206207..75349af1ae 100644 --- a/repos/gems/src/server/terminal/main.cc +++ b/repos/gems/src/server/terminal/main.cc @@ -229,9 +229,7 @@ void Terminal::Main::_handle_config() _text_screen_surface->geometry(new_geometry); } } - catch (Text_screen_surface::Geometry::Invalid) - { - warning("invalid framebuffer size"); + catch (Text_screen_surface::Geometry::Invalid) { /* * Make sure to never operate on an invalid-sized framebuffer @@ -240,6 +238,7 @@ void Terminal::Main::_handle_config() * there may still be a stale '_text_screen_surface'. */ _text_screen_surface.destruct(); + _terminal_size = Area(0, 0); } _root.notify_resized(Session::Size(_terminal_size.w(), _terminal_size.h()));