X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=ncurses%2Ftinfo%2Flib_cur_term.c;h=6ef62cb23dded441ab78f1f38259ab98a8a4b3ac;hb=461e72d1826483cb2c2cb243412f2dc5b00b2b1a;hp=a61a65561bbf83fb62dc29067636842291b7abdf;hpb=5e1e572b71ae31a6071daa24e2460a68a6f1003c;p=ncurses.git diff --git a/ncurses/tinfo/lib_cur_term.c b/ncurses/tinfo/lib_cur_term.c index a61a6556..6ef62cb2 100644 --- a/ncurses/tinfo/lib_cur_term.c +++ b/ncurses/tinfo/lib_cur_term.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -38,8 +39,9 @@ #include #include /* ospeed */ +#include /* VALID_STRING */ -MODULE_ID("$Id: lib_cur_term.c,v 1.40 2017/04/15 21:35:08 tom Exp $") +MODULE_ID("$Id: lib_cur_term.c,v 1.45 2021/11/20 23:19:41 tom Exp $") #undef CUR #define CUR TerminalType(termp). @@ -98,19 +100,17 @@ 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 -#define MY_SIZE (size_t) (NAMESIZE - 1) - _nc_STRNCPY(ttytype, TerminalType(termp).term_names, MY_SIZE); - ttytype[MY_SIZE] = '\0'; + save_ttytype(termp); #endif } _nc_unlock_global(curses); @@ -167,10 +167,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); }