]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/tinfo/lib_tparm.c
ncurses 6.2 - patch 20210522
[ncurses.git] / ncurses / tinfo / lib_tparm.c
index b8104eabcd5e57cdf28d930ccbf6947ed6909085..3fe42399855215f9ba1bc42408afdf21cc42658d 100644 (file)
@@ -53,7 +53,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: lib_tparm.c,v 1.129 2021/02/14 00:09:49 tom Exp $")
+MODULE_ID("$Id: lib_tparm.c,v 1.131 2021/04/03 22:05:59 tom Exp $")
 
 /*
  *     char *
@@ -173,14 +173,16 @@ _nc_free_tparm(void)
 {
 #if HAVE_TSEARCH
     if (MyCount != 0) {
-       delete_tparm = typeMalloc(TPARM_DATA *, MyCount);
+       delete_tparm = typeCalloc(TPARM_DATA *, MyCount);
        which_tparm = 0;
        twalk(MyCache, visit_nodes);
        for (which_tparm = 0; which_tparm < MyCount; ++which_tparm) {
            TPARM_DATA *ptr = delete_tparm[which_tparm];
-           tdelete(ptr, &MyCache, cmp_format);
-           free((char *) ptr->format);
-           free(ptr);
+           if (ptr != NULL) {
+               tdelete(ptr, &MyCache, cmp_format);
+               free((char *) ptr->format);
+               free(ptr);
+           }
        }
        which_tparm = 0;
        twalk(MyCache, visit_nodes);
@@ -592,9 +594,11 @@ tparm_setup(const char *string, TPARM_DATA * result)
                        if (tsearch(fs, &MyCache, cmp_format) != 0) {
                            ++MyCount;
                        } else {
+                           free(fs);
                            rc = ERR;
                        }
                    } else {
+                       free(fs);
                        rc = ERR;
                    }
                } else {
@@ -983,7 +987,6 @@ NCURSES_EXPORT(char *)
 tparm(const char *string, ...)
 {
     TPARM_DATA myData;
-    va_list ap;
     char *result = NULL;
 
     _nc_tparm_err = 0;
@@ -992,6 +995,7 @@ tparm(const char *string, ...)
 #endif /* TRACE */
 
     if (tparm_setup(string, &myData) == OK) {
+       va_list ap;
 
        va_start(ap, string);
        tparm_copy_valist(&myData, TRUE, ap);
@@ -1047,7 +1051,6 @@ NCURSES_EXPORT(char *)
 tiparm(const char *string, ...)
 {
     TPARM_DATA myData;
-    va_list ap;
     char *result = NULL;
 
     _nc_tparm_err = 0;
@@ -1056,6 +1059,7 @@ tiparm(const char *string, ...)
 #endif /* TRACE */
 
     if (tparm_setup(string, &myData) == OK) {
+       va_list ap;
 
        va_start(ap, string);
        tparm_copy_valist(&myData, FALSE, ap);
@@ -1073,7 +1077,6 @@ NCURSES_EXPORT(char *)
 _nc_tiparm(int expected, const char *string, ...)
 {
     TPARM_DATA myData;
-    va_list ap;
     char *result = NULL;
 
     _nc_tparm_err = 0;
@@ -1084,6 +1087,7 @@ _nc_tiparm(int expected, const char *string, ...)
     if (tparm_setup(string, &myData) == OK
        && myData.num_actual <= expected
        && myData.tparm_type == 0) {
+       va_list ap;
 
        va_start(ap, string);
        tparm_copy_valist(&myData, FALSE, ap);