diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-08-04 19:15:35 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-08-04 19:15:35 -0700 |
commit | 0065d05491ce5981ea20896bb26d21dcd31e6769 (patch) | |
tree | 13240167319d4a99ab5eacae4a883258eb2d28de /src/tparam.c | |
parent | 18ab493650d648ab8dca651ea2698861f926e895 (diff) | |
download | emacs-0065d05491ce5981ea20896bb26d21dcd31e6769.tar.gz |
Adjust in response to jan.h.d's comments.
See, for example <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9196#26>.
Diffstat (limited to 'src/tparam.c')
-rw-r--r-- | src/tparam.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/src/tparam.c b/src/tparam.c index 06cec873153..ac21667d65b 100644 --- a/src/tparam.c +++ b/src/tparam.c @@ -101,18 +101,13 @@ tparam1 (const char *string, char *outstring, int len, if (outlen == 0) { - if (min (PTRDIFF_MAX, SIZE_MAX) - 40 < len) - goto out_of_memory; outlen = len + 40; new = (char *) xmalloc (outlen); memcpy (new, outstring, offset); } else { - if (min (PTRDIFF_MAX, SIZE_MAX) / 2 < outlen) - goto out_of_memory; - outlen *= 2; - new = (char *) xrealloc (outstring, outlen); + new = xpalloc (outstring, &outlen, 1, -1, 1); } op = new + offset; @@ -178,12 +173,8 @@ tparam1 (const char *string, char *outstring, int len, doup++, append_len_incr = strlen (up); else doleft++, append_len_incr = strlen (left); - if (PTRDIFF_MAX - append_len < append_len_incr) - { - out_of_memory: - xfree (new); - memory_full (SIZE_MAX); - } + if (INT_ADD_OVERFLOW (append_len, append_len_incr)) + memory_full (SIZE_MAX); append_len += append_len_incr; } } @@ -286,7 +277,7 @@ main (int argc, char **argv) args[0] = atoi (argv[2]); args[1] = atoi (argv[3]); args[2] = atoi (argv[4]); - tparam1 (argv[1], buf, "LEFT", "UP", args); + tparam1 (argv[1], buf, 50, "LEFT", "UP", args); printf ("%s\n", buf); return 0; } |