Hi,

I took a look at svnbrowse today and it is coming together nicely! Of
course I had to try to break it as well... I suppose you are already aware
but it would make life easier when testing if we could sort this out.

I picked a random commit trying to explain.

Den ons 1 apr. 2026 kl 22:53 skrev <[email protected]>:

...


>
>  static svn_error_t *
>  sub_main(int *code, int argc, char *argv[], apr_pool_t *pool)
>  {
>

...sub_main initializes the screen...


>    /* init the display */
>    initscr();
>
>
Then later on when processing some keypresses, we call SVN_ERR()


> +      else if (ch == KEY_BACKSPACE || ch == '-' || ch == 'u')
> +        {
> +          const char *new_url = svn_relpath_dirname(ctx.relpath, pool);
> +          SVN_ERR(enter_path(&ctx, new_url, pool));
> +        }
>

SVN_ERR return whenever there is an error. This leads to

quit:
    endwin();

never being executed, thus leaving the terminal in an unusable state.
(`reset` works fine to restore it).

I initially thought about a global variable and moving endwin() to the
proper main(), but thinking twice it might be better to just move the
keypress processing loop to its own function.

Thoughts?

/Daniel

Reply via email to