X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Flib_setup.c;h=93a42a04a3aabc2f0188f0af5bdfd69c1c1e3cf7;hp=67a2a0aa828eafcbfd29efc59fd950154ad76ac2;hb=af3d0ee323cbb22d2a7596d564bf68f7307f5076;hpb=dee978d1ba016c8f327516f684900f95ee7a2b30 diff --git a/ncurses/tinfo/lib_setup.c b/ncurses/tinfo/lib_setup.c index 67a2a0aa..93a42a04 100644 --- a/ncurses/tinfo/lib_setup.c +++ b/ncurses/tinfo/lib_setup.c @@ -48,7 +48,7 @@ #include #endif -MODULE_ID("$Id: lib_setup.c,v 1.178 2017/04/11 23:51:32 tom Exp $") +MODULE_ID("$Id: lib_setup.c,v 1.182 2017/06/17 22:21:50 tom Exp $") /**************************************************************************** * @@ -115,12 +115,12 @@ NCURSES_PUBLIC_VAR(ttytype) (void) if (CURRENT_SCREEN) { TERMINAL *termp = TerminalOf(CURRENT_SCREEN); if (termp != 0) { - result = termp->type.term_names; + result = TerminalType(termp).term_names; } } #else if (cur_term != 0) { - result = cur_term->type.term_names; + result = TerminalType(cur_term).term_names; } #endif return result; @@ -693,7 +693,7 @@ TINFO_SETUP_TERM(TERMINAL **tp, && termp->Filedes == Filedes && termp->_termname != 0 && !strcmp(termp->_termname, tname) - && _nc_name_match(termp->type.term_names, tname, "|")) { + && _nc_name_match(TerminalType(termp).term_names, tname, "|")) { T(("reusing existing terminal information and mode-settings")); code = OK; #ifdef USE_TERM_DRIVER @@ -721,6 +721,8 @@ TINFO_SETUP_TERM(TERMINAL **tp, termp->Filedes = (short) Filedes; termp->_termname = strdup(tname); } else { + _nc_free_termtype2(&TerminalType(termp)); + free(my_tcb); ret_error0(errret ? *errret : TGETENT_ERR, "Could not find any driver to handle this terminal.\n"); } @@ -744,8 +746,10 @@ TINFO_SETUP_TERM(TERMINAL **tp, if (status != TGETENT_YES) { del_curterm(termp); if (status == TGETENT_ERR) { + _nc_free_termtype2(&TerminalType(termp)); ret_error0(status, "terminals database is inaccessible\n"); } else if (status == TGETENT_NO) { + _nc_free_termtype2(&TerminalType(termp)); ret_error1(status, "unknown terminal type.\n", tname); } } @@ -753,9 +757,7 @@ TINFO_SETUP_TERM(TERMINAL **tp, _nc_export_termtype2(&termp->type, &TerminalType(termp)); #endif #if !USE_REENTRANT -#define MY_SIZE (size_t) (NAMESIZE - 1) - _nc_STRNCPY(ttytype, termp->type.term_names, MY_SIZE); - ttytype[MY_SIZE] = '\0'; + save_ttytype(termp); #endif termp->Filedes = (short) Filedes;