Index: external/bsd/nvi/dist/cl/cl_main.c =================================================================== RCS file: /cvsroot/src/external/bsd/nvi/dist/cl/cl_main.c,v retrieving revision 1.5 diff -p -u -r1.5 cl_main.c --- external/bsd/nvi/dist/cl/cl_main.c 25 Nov 2015 20:25:20 -0000 1.5 +++ external/bsd/nvi/dist/cl/cl_main.c 27 Aug 2017 13:25:20 -0000 @@ -311,6 +311,10 @@ h_winch(int signo) continue; F_SET(clp, CL_SIGWINCH); + + /* If there was a previous handler, call that. */ + if (clp->oact[INDX_WINCH].sa_handler) + clp->oact[INDX_WINCH].sa_handler(signo); } #undef GLOBAL_CLP Index: external/bsd/nvi/dist/cl/cl_screen.c =================================================================== RCS file: /cvsroot/src/external/bsd/nvi/dist/cl/cl_screen.c,v retrieving revision 1.5 diff -p -u -r1.5 cl_screen.c --- external/bsd/nvi/dist/cl/cl_screen.c 25 Nov 2015 20:25:20 -0000 1.5 +++ external/bsd/nvi/dist/cl/cl_screen.c 27 Aug 2017 13:25:20 -0000 @@ -430,7 +430,7 @@ cl_vi_end(GS *gp) * Move to the bottom of the window (some endwin implementations don't * do this for you). */ - if (!F_ISSET(clp, CL_IN_EX)) { + if (!F_ISSET(clp, CL_IN_EX) && !F_ISSET(gp, G_SRESTART)) { (void)move(0, 0); (void)deleteln(); (void)move(LINES - 1, 0);