X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Flib_tparm.c;h=a98cfd86afbf0114911b007c7d72e2254d0fe769;hp=4431f3843d0c327fd99f7959c447ff9372c0a691;hb=f8f67d02e909c4d165fbed2ba2810c94f2862548;hpb=690589d8f19e38925db061296d4f704e4a965bb2 diff --git a/ncurses/tinfo/lib_tparm.c b/ncurses/tinfo/lib_tparm.c index 4431f384..a98cfd86 100644 --- a/ncurses/tinfo/lib_tparm.c +++ b/ncurses/tinfo/lib_tparm.c @@ -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 #include -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;