ncurses 6.1 - patch 20180923
[ncurses.git] / ncurses / base / lib_slk.c
index 118db945d78dfe88a74eb9d4f0809d3431f90299..84f17ae03705d6af7dd575f296f79f4a095ad6b2 100644 (file)
@@ -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            *
  *                                                                          *
  * 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
 
 #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
 
 #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 i;
     int res = OK;
-    int max_length;
+    size_t max_length;
     SCREEN *sp;
     int numlab;
 
     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,
     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));
 
        == 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++) {
     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)
 
        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));
 
        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);
     }
 
        SP_PARM->_slk->ent[i].visible = (char) (i < SP_PARM->_slk->maxlab);
     }