X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_slk.c;h=118db945d78dfe88a74eb9d4f0809d3431f90299;hp=8fafdbca83832530aa11f347106bd107e58f6aaf;hb=6b43eaddcd1d9397fb3d51ce4c34f02472e93417;hpb=f9d358b4f3cf9b44727a0ee5c08f8ca6ae4e3821 diff --git a/ncurses/base/lib_slk.c b/ncurses/base/lib_slk.c index 8fafdbca..118db945 100644 --- a/ncurses/base/lib_slk.c +++ b/ncurses/base/lib_slk.c @@ -47,7 +47,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_slk.c,v 1.45 2010/05/01 20:44:34 tom Exp $") +MODULE_ID("$Id: lib_slk.c,v 1.46 2010/06/05 22:37:05 tom Exp $") #ifdef USE_TERM_DRIVER #define NumLabels InfoOf(SP_PARM).numlabels @@ -79,7 +79,7 @@ NCURSES_EXPORT(int) _nc_format_slks(NCURSES_SP_DCLx int cols) { int gap, i, x; - unsigned max_length; + int max_length; if (!SP_PARM || !SP_PARM->_slk) return ERR; @@ -98,7 +98,7 @@ _nc_format_slks(NCURSES_SP_DCLx int cols) } } else { if (SP_PARM->slk_format == 2) { /* 4-4 */ - gap = cols - (SP_PARM->_slk->maxlab * max_length) - 6; + gap = cols - (int) (SP_PARM->_slk->maxlab * max_length) - 6; if (gap < 1) gap = 1; @@ -138,7 +138,7 @@ _nc_slk_initialize(WINDOW *stwin, int cols) { int i; int res = OK; - unsigned max_length; + int max_length; SCREEN *sp; int numlab; @@ -172,15 +172,15 @@ _nc_slk_initialize(WINDOW *stwin, int cols) else SetAttr(SP_PARM->_slk->attr, A_REVERSE); - SP_PARM->_slk->maxlab = ((numlab > 0) - ? numlab - : MAX_SKEY(SP_PARM->slk_format)); - SP_PARM->_slk->maxlen = ((numlab > 0) - ? LabelWidth * LabelHeight - : MAX_SKEY_LEN(SP_PARM->slk_format)); - SP_PARM->_slk->labcnt = ((SP_PARM->_slk->maxlab < MAX_SKEY(SP_PARM->slk_format)) - ? MAX_SKEY(SP_PARM->slk_format) - : SP_PARM->_slk->maxlab); + SP_PARM->_slk->maxlab = (short) ((numlab > 0) + ? numlab + : MAX_SKEY(SP_PARM->slk_format)); + SP_PARM->_slk->maxlen = (short) ((numlab > 0) + ? LabelWidth * LabelHeight + : MAX_SKEY_LEN(SP_PARM->slk_format)); + SP_PARM->_slk->labcnt = (short) ((SP_PARM->_slk->maxlab < MAX_SKEY(SP_PARM->slk_format)) + ? MAX_SKEY(SP_PARM->slk_format) + : SP_PARM->_slk->maxlab); if (SP_PARM->_slk->maxlen <= 0 || SP_PARM->_slk->labcnt <= 0 @@ -191,7 +191,7 @@ _nc_slk_initialize(WINDOW *stwin, int cols) max_length = SP_PARM->_slk->maxlen; for (i = 0; i < SP_PARM->_slk->labcnt; i++) { - size_t used = max_length + 1; + size_t used = (size_t) max_length + 1; SP_PARM->_slk->ent[i].ent_text = (char *) _nc_doalloc(0, used); if (SP_PARM->_slk->ent[i].ent_text == 0) @@ -201,9 +201,10 @@ _nc_slk_initialize(WINDOW *stwin, int cols) SP_PARM->_slk->ent[i].form_text = (char *) _nc_doalloc(0, used); if (SP_PARM->_slk->ent[i].form_text == 0) returnCode(slk_failed(NCURSES_SP_ARG)); - memset(SP_PARM->_slk->ent[i].form_text, 0, used); - memset(SP_PARM->_slk->ent[i].form_text, ' ', max_length); + memset(SP_PARM->_slk->ent[i].form_text, ' ', used - 1); + SP_PARM->_slk->ent[i].form_text[used] = '\0'; + SP_PARM->_slk->ent[i].visible = (char) (i < SP_PARM->_slk->maxlab); }