X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_slk.c;h=84f17ae03705d6af7dd575f296f79f4a095ad6b2;hp=118db945d78dfe88a74eb9d4f0809d3431f90299;hb=8d8a3537cd58af7879c6e1921235daeed2b74926;hpb=6b43eaddcd1d9397fb3d51ce4c34f02472e93417 diff --git a/ncurses/base/lib_slk.c b/ncurses/base/lib_slk.c index 118db945..84f17ae0 100644 --- a/ncurses/base/lib_slk.c +++ b/ncurses/base/lib_slk.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -47,7 +47,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_slk.c,v 1.46 2010/06/05 22:37:05 tom Exp $") +MODULE_ID("$Id: lib_slk.c,v 1.48 2011/03/05 21:21:52 tom Exp $") #ifdef USE_TERM_DRIVER #define NumLabels InfoOf(SP_PARM).numlabels @@ -138,7 +138,7 @@ _nc_slk_initialize(WINDOW *stwin, int cols) { int i; int res = OK; - int max_length; + size_t max_length; SCREEN *sp; int numlab; @@ -185,13 +185,13 @@ _nc_slk_initialize(WINDOW *stwin, int cols) if (SP_PARM->_slk->maxlen <= 0 || SP_PARM->_slk->labcnt <= 0 || (SP_PARM->_slk->ent = typeCalloc(slk_ent, - (unsigned) SP_PARM->_slk->labcnt)) + (size_t) SP_PARM->_slk->labcnt)) == NULL) returnCode(slk_failed(NCURSES_SP_ARG)); - max_length = SP_PARM->_slk->maxlen; + max_length = (size_t) SP_PARM->_slk->maxlen; for (i = 0; i < SP_PARM->_slk->labcnt; i++) { - size_t used = (size_t) max_length + 1; + size_t used = max_length + 1; SP_PARM->_slk->ent[i].ent_text = (char *) _nc_doalloc(0, used); if (SP_PARM->_slk->ent[i].ent_text == 0) @@ -202,8 +202,10 @@ _nc_slk_initialize(WINDOW *stwin, int cols) if (SP_PARM->_slk->ent[i].form_text == 0) returnCode(slk_failed(NCURSES_SP_ARG)); - memset(SP_PARM->_slk->ent[i].form_text, ' ', used - 1); - SP_PARM->_slk->ent[i].form_text[used] = '\0'; + if (used > 1) { + memset(SP_PARM->_slk->ent[i].form_text, ' ', used - 1); + } + SP_PARM->_slk->ent[i].form_text[used - 1] = '\0'; SP_PARM->_slk->ent[i].visible = (char) (i < SP_PARM->_slk->maxlab); }