"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Christian Weisgerber <naddy@mips.inka.de>
Subject:
Re: tog: 'q' exits instead of quitting view (FreeBSD)
To:
gameoftrees@openbsd.org
Date:
Sun, 15 Nov 2020 16:16:02 +0100

Download raw body.

Thread
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