X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=ncurses%2Ftinfo%2Flib_cur_term.c;h=1f8db2c1e0c8587984503ffe69b0d22b239a24f9;hb=d1a029866f6d84087781eaa81de19949d8533426;hp=4a90335d5e333ecdd5a820f1fe40162e1aeaa2a5;hpb=47d2fb4537d9ad5bb14f4810561a327930ca4280;p=ncurses.git diff --git a/ncurses/tinfo/lib_cur_term.c b/ncurses/tinfo/lib_cur_term.c index 4a90335d..1f8db2c1 100644 --- a/ncurses/tinfo/lib_cur_term.c +++ b/ncurses/tinfo/lib_cur_term.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * +,* Copyright 2020-2021,2022 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -39,8 +39,9 @@ #include #include /* ospeed */ +#include /* VALID_STRING */ -MODULE_ID("$Id: lib_cur_term.c,v 1.42 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: lib_cur_term.c,v 1.49 2022/05/28 17:56:55 tom Exp $") #undef CUR #define CUR TerminalType(termp). @@ -99,13 +100,13 @@ NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL *termp) if (TCB->drv && TCB->drv->isTerminfo && TerminalType(termp).Strings) { - PC = (char) ((pad_char != NULL) ? pad_char[0] : 0); + PC = (char) (VALID_STRING(pad_char) ? pad_char[0] : 0); } TCB->csp = SP_PARM; #else ospeed = (NCURSES_OSPEED) _nc_ospeed(termp->_baudrate); if (TerminalType(termp).Strings) { - PC = (char) ((pad_char != NULL) ? pad_char[0] : 0); + PC = (char) (VALID_STRING(pad_char) ? pad_char[0] : 0); } #endif #if !USE_REENTRANT @@ -146,7 +147,11 @@ NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL *termp) ); #if NCURSES_EXT_NUMBERS - _nc_free_termtype(&termp->type); +#if NCURSES_EXT_COLORS + _nc_free_termtype1(&termp->type); +#else + _nc_free_termtype2(&termp->type); +#endif #endif _nc_free_termtype2(&TerminalType(termp)); if (termp == cur) @@ -166,10 +171,17 @@ NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL *termp) /* discard memory used in tgetent's cache for this terminal */ _nc_tgetent_leak(termp); #endif + if (--_nc_globals.terminal_count == 0) { + _nc_free_tparm(termp); + } + + free(termp->tparm_state.fmt_buff); + free(termp->tparm_state.out_buff); free(termp); rc = OK; } + returnCode(rc); }