From: Christian Weisgerber Subject: Re: tog: 'q' exits instead of quitting view (FreeBSD) To: gameoftrees@openbsd.org Date: Sun, 15 Nov 2020 16:16:02 +0100 Stefan Sperling: > > The sequence above is: > > 1. open first log view > > => this view is remembered in main_view > > 2. open tree view > > 3. open second log view, closes first log view and tree view > > => the memory of the first log view and the tree view is free()ed > > 4. open diff view > > => malloc() returns the memory previously occupied by the first > > log view > > => the new diff view now matches main_view > > Hmmm. Does this fix it? > > --- tog/tog.c > +++ tog/tog.c > @@ -988,6 +988,8 @@ view_loop(struct tog_view *view) > view = new_view; > if (focus_view == NULL) > focus_view = new_view; > + if (dead_view == main_view) > + main_view = new_view; > } > if (focus_view) { > show_panel(focus_view->panel); Nope. Opening a new view does not set dead_view. There are only three instances where dead_view is set to non-NULL: - view_input: q - input_log_view: ^L - input_log_view: B -- Christian "naddy" Weisgerber naddy@mips.inka.de