#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
_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;
}
} 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;
{
int i;
int res = OK;
- unsigned max_length;
+ int max_length;
SCREEN *sp;
int numlab;
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
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)
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);
}