X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;ds=sidebyside;f=ncurses%2Fbase%2Flib_set_term.c;h=78de859208b6b1d0c8639d1efa279dbfc342b70e;hb=a09e8b13568e210a03ca4ad64e8552c0edea07c5;hp=9d61f5aea58d9605e6e4ad69bf2fa585a7ebf146;hpb=6662c1ccb49cb09d0f2cec2ec6150410a0fd0f7f;p=ncurses.git diff --git a/ncurses/base/lib_set_term.c b/ncurses/base/lib_set_term.c index 9d61f5ae..78de8592 100644 --- a/ncurses/base/lib_set_term.c +++ b/ncurses/base/lib_set_term.c @@ -41,8 +41,11 @@ ** */ +#define NEW_PAIR_INTERNAL 1 + #include #include +#include #if USE_GPM_SUPPORT #ifdef HAVE_LIBDL @@ -54,7 +57,7 @@ #undef CUR #define CUR SP_TERMTYPE -MODULE_ID("$Id: lib_set_term.c,v 1.181 2022/07/21 23:35:21 tom Exp $") +MODULE_ID("$Id: lib_set_term.c,v 1.184 2022/12/10 21:34:12 tom Exp $") #ifdef USE_TERM_DRIVER #define MaxColors InfoOf(sp).maxcolors @@ -146,6 +149,7 @@ delscreen(SCREEN *sp) _nc_lock_global(curses); if (delink_screen(sp)) { + WINDOWLIST *wl; bool is_current = (sp == CURRENT_SCREEN); #ifdef USE_SP_RIPOFF @@ -162,9 +166,13 @@ delscreen(SCREEN *sp) } #endif - (void) _nc_freewin(CurScreen(sp)); - (void) _nc_freewin(NewScreen(sp)); - (void) _nc_freewin(StdScreen(sp)); + /* delete all of the windows in this screen */ + rescan: + for (each_window(sp, wl)) { + if (_nc_freewin(&(wl->win)) == OK) { + goto rescan; + } + } if (sp->_slk != 0) { @@ -189,6 +197,7 @@ delscreen(SCREEN *sp) FreeIfNeeded(sp->_current_attr); + _nc_free_ordered_pairs(sp); FreeIfNeeded(sp->_color_table); FreeIfNeeded(sp->_color_pairs); @@ -742,6 +751,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( } T(("creating stdscr")); + (void) bottom_stolen; assert((sp->_lines_avail + sp->_topstolen + bottom_stolen) == slines); if ((StdScreen(sp) = NCURSES_SP_NAME(newwin) (NCURSES_SP_ARGx sp->_lines_avail,