X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Ftinfo_driver.c;h=605f2d3db3a2053279016683c7fc0492539dd933;hp=8b986aa23ae2fff5296ea6fd24dfd29ae23af4b9;hb=b22573b1ba4b51da883fa5f805b52f153fa5fae9;hpb=3e7e5f8b5c4e8e499f682a1c414c576c16d47532 diff --git a/ncurses/tinfo/tinfo_driver.c b/ncurses/tinfo/tinfo_driver.c index 8b986aa2..605f2d3d 100644 --- a/ncurses/tinfo/tinfo_driver.c +++ b/ncurses/tinfo/tinfo_driver.c @@ -51,7 +51,7 @@ # endif #endif -MODULE_ID("$Id: tinfo_driver.c,v 1.56 2017/06/24 19:54:16 tom Exp $") +MODULE_ID("$Id: tinfo_driver.c,v 1.58 2017/06/26 00:43:07 tom Exp $") /* * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS, @@ -204,8 +204,16 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret) if (sp == 0 && NC_ISATTY(termp->Filedes)) { get_baudrate(termp); } +#if NCURSES_EXT_NUMBERS +#define cleanup_termtype() \ + _nc_free_termtype2(&TerminalType(termp)); \ + _nc_free_termtype(&termp->type) +#else +#define cleanup_termtype() \ + _nc_free_termtype2(&TerminalType(termp)) +#endif - if (generic_type) { + if (generic_type) { /* * BSD 4.3's termcap contains mis-typed "gn" for wy99. Do a sanity * check before giving up. @@ -213,18 +221,15 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret) if ((VALID_STRING(cursor_address) || (VALID_STRING(cursor_down) && VALID_STRING(cursor_home))) && VALID_STRING(clear_screen)) { - _nc_free_termtype2(&TerminalType(termp)); - free(TCB); + cleanup_termtype(); ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname); } else { - _nc_free_termtype2(&TerminalType(termp)); - free(TCB); + cleanup_termtype(); ret_error1(TGETENT_NO, "I need something more specific.\n", tname); } } if (hard_copy) { - _nc_free_termtype2(&TerminalType(termp)); - free(TCB); + cleanup_termtype(); ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname); }