X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_slk.c;h=f4b3ce6dbf0ae0fd9c06a9f3353b9fe20d18fd70;hp=118db945d78dfe88a74eb9d4f0809d3431f90299;hb=790a85dbd4a81d5f5d8dd02a44d84f01512ef443;hpb=6b43eaddcd1d9397fb3d51ce4c34f02472e93417;ds=sidebyside diff --git a/ncurses/base/lib_slk.c b/ncurses/base/lib_slk.c index 118db945..f4b3ce6d 100644 --- a/ncurses/base/lib_slk.c +++ b/ncurses/base/lib_slk.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 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 +48,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.49 2020/02/02 23:34:34 tom Exp $") #ifdef USE_TERM_DRIVER #define NumLabels InfoOf(SP_PARM).numlabels @@ -138,7 +139,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 +186,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 +203,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); }