X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;ds=sidebyside;f=ncurses%2Fbase%2Flib_set_term.c;h=83d0e7d01487a7954bb16e4f2b269828e2c12e64;hb=5ae2721913c0d2adde0d65063e37a723bf8a0987;hp=3ed5e72431394834013eaf2e844680748c7eb8d1;hpb=6c611e66965f5a8fb1a6696611f18441132852a2;p=ncurses.git diff --git a/ncurses/base/lib_set_term.c b/ncurses/base/lib_set_term.c index 3ed5e724..83d0e7d0 100644 --- a/ncurses/base/lib_set_term.c +++ b/ncurses/base/lib_set_term.c @@ -47,7 +47,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_set_term.c,v 1.143 2012/08/25 20:10:40 tom Exp $") +MODULE_ID("$Id: lib_set_term.c,v 1.146 2012/10/27 23:04:17 tom Exp $") #ifdef USE_TERM_DRIVER #define MaxColors InfoOf(sp).maxcolors @@ -261,8 +261,8 @@ extract_fgbg(char *src, int *result) } #endif -#define ReturnScreenError() _nc_set_screen(0); \ - returnCode(ERR) +#define ReturnScreenError() { _nc_set_screen(0); \ + returnCode(ERR); } while (0) /* OS-independent screen initializations */ NCURSES_EXPORT(int) @@ -376,7 +376,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( fflush(output); sp->_ofd = output ? fileno(output) : -1; sp->_ofp = output; - sp->out_limit = (size_t) (slines * scolumns); + sp->out_limit = (size_t) ((2 + slines) * (6 + scolumns)); if ((sp->out_buffer = malloc(sp->out_limit)) == 0) sp->out_limit = 0; sp->out_inuse = 0; @@ -582,6 +582,9 @@ NCURSES_SP_NAME(_nc_setupscreen) ( NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_ARG); #if USE_WIDEC_SUPPORT _nc_init_wacs(); + if (_nc_wacs == 0) { + ReturnScreenError(); + } sp->_screen_acs_fix = (_nc_unicode_locale() && _nc_locale_breaks_acs(sp->_term));