ncurses 6.1 - patch 20190914
[ncurses.git] / ncurses / tinfo / lib_tparm.c
index 4431f3843d0c327fd99f7959c447ff9372c0a691..a98cfd86afbf0114911b007c7d72e2254d0fe769 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2018,2019 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            *
@@ -42,7 +42,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: lib_tparm.c,v 1.103 2017/07/30 00:13:55 tom Exp $")
+MODULE_ID("$Id: lib_tparm.c,v 1.107 2019/01/19 15:46:25 tom Exp $")
 
 /*
  *     char *
@@ -354,8 +354,8 @@ _nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount)
     if (cp == 0)
        return 0;
 
-    if ((len2 = strlen(cp)) > TPS(fmt_size)) {
-       TPS(fmt_size) = len2 + TPS(fmt_size) + 2;
+    if ((len2 = strlen(cp)) + 2 > TPS(fmt_size)) {
+       TPS(fmt_size) += len2 + 2;
        TPS(fmt_buff) = typeRealloc(char, TPS(fmt_size), TPS(fmt_buff));
        if (TPS(fmt_buff) == 0)
            return 0;
@@ -485,8 +485,10 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
     bool termcap_hack;
     bool incremented_two;
 
-    if (cp == NULL)
+    if (cp == NULL) {
+       TR(TRACE_CALLS, ("%s: format is null", TPS(tname)));
        return NULL;
+    }
 
     TPS(out_used) = 0;
     len2 = strlen(cp);
@@ -497,8 +499,10 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
      * variable-length argument list.
      */
     number = _nc_tparm_analyze(cp, p_is_s, &popcount);
-    if (TPS(fmt_buff) == 0)
+    if (TPS(fmt_buff) == 0) {
+       TR(TRACE_CALLS, ("%s: error in analysis", TPS(tname)));
        return NULL;
+    }
 
     incremented_two = FALSE;
 
@@ -549,7 +553,8 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
        for (i = 0; i < num_args; i++) {
            if (p_is_s[i] != 0) {
                save_text(", %s", _nc_visbuf(p_is_s[i]), 0);
-           } else if ((long) param[i] > 32767 || (long) param[i] < 0) {
+           } else if ((long) param[i] > MAX_OF_TYPE(NCURSES_INT2) ||
+                      (long) param[i] < 0) {
                _tracef("BUG: problem with tparm parameter #%d of %d",
                        i + 1, num_args);
                break;
@@ -835,7 +840,7 @@ tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
 #endif
 
 NCURSES_EXPORT(char *)
-tparm_varargs(NCURSES_CONST char *string,...)
+tparm_varargs(const char *string, ...)
 {
     va_list ap;
     char *result;
@@ -852,7 +857,7 @@ tparm_varargs(NCURSES_CONST char *string,...)
 
 #if !NCURSES_TPARM_VARARGS
 NCURSES_EXPORT(char *)
-tparm_proto(NCURSES_CONST char *string,
+tparm_proto(const char *string,
            TPARM_ARG a1,
            TPARM_ARG a2,
            TPARM_ARG a3,
@@ -868,7 +873,7 @@ tparm_proto(NCURSES_CONST char *string,
 #endif /* NCURSES_TPARM_VARARGS */
 
 NCURSES_EXPORT(char *)
-tiparm(const char *string,...)
+tiparm(const char *string, ...)
 {
     va_list ap;
     char *result;