From f265160c26eb9ee130de6258da209beb003e7e90 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sun, 21 May 2023 10:50:56 -0700 Subject: [PATCH] maint: prefer ckd_add, ckd_mul to INT_ADD_WRAPV, INT_MULTIPLY_WRAPV * bootstrap.conf (gnulib_modules): Add stdckdint. * lib/cmpbuf.c: Use ckd_mul rather than INT_MULTIPLY_WRAPV. Include stdckdint.h, not "intprops.h". * src/diff.c: Similar, but for both ckd_add and ckd_mul. * src/io.c: Likewise for ckd_add. --- bootstrap.conf | 1 + lib/cmpbuf.c | 4 ++-- src/diff.c | 10 +++++----- src/io.c | 10 +++++----- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/bootstrap.conf b/bootstrap.conf index 6630b15..80e80ad 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -80,6 +80,7 @@ stat stat-macros stat-time stdbool +stdckdint stdint stpcpy strcase diff --git a/lib/cmpbuf.c b/lib/cmpbuf.c index aa79edb..5b299f3 100644 --- a/lib/cmpbuf.c +++ b/lib/cmpbuf.c @@ -21,12 +21,12 @@ #include #include #include +#include #include #include #include #include #include "cmpbuf.h" -#include "intprops.h" #ifndef SSIZE_MAX # define SSIZE_MAX TYPE_MAXIMUM (ssize_t) @@ -104,5 +104,5 @@ buffer_lcm (size_t a, size_t b, size_t lcm_max) /* Yield a if there is an overflow. */ q = a / n; - return !INT_MULTIPLY_WRAPV (q, b, &lcm) && lcm <= lcm_max ? lcm : a; + return !ckd_mul (&lcm, b, q) && lcm <= lcm_max ? lcm : a; } diff --git a/src/diff.c b/src/diff.c index c5cc758..eef28c5 100644 --- a/src/diff.c +++ b/src/diff.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -254,7 +255,7 @@ option_list (char **optionvec, int count) for (i = 0; i < count; i++) { size_t optsize = 1 + shell_quote_length (optionvec[i]); - if (INT_ADD_WRAPV (optsize, size, &size)) + if (ckd_add (&size, size, optsize)) xalloc_die (); } @@ -414,10 +415,9 @@ main (int argc, char **argv) "#endif /* @ */\n"); size_t alloc = strlen (optarg); - if (INT_MULTIPLY_WRAPV (alloc, 7, &alloc) - || INT_ADD_WRAPV (alloc, - sizeof C_ifdef_group_formats - 7 /* 7*"@" */, - &alloc)) + if (ckd_mul (&alloc, 7, alloc) + || ckd_add (&alloc, alloc, + sizeof C_ifdef_group_formats - 7 /* 7*"@" */)) xalloc_die (); char *b = xmalloc (alloc); char *base = b; diff --git a/src/io.c b/src/io.c index fe4f8b4..d19e28b 100644 --- a/src/io.c +++ b/src/io.c @@ -22,6 +22,7 @@ #include #include #include +#include #include /* Rotate an unsigned value to the left. */ @@ -175,8 +176,8 @@ slurp (struct file_data *current) Allocate just enough room for appended newline plus word sentinel, plus word-alignment since we want the buffer word-aligned. */ off_t file_size = current->stat.st_size; - if (INT_ADD_WRAPV (2 * sizeof (word) - file_size % sizeof (word), - file_size, &cc)) + if (ckd_add (&cc, 2 * sizeof (word) - file_size % sizeof (word), + file_size)) xalloc_die (); if (current->bufsize < cc) @@ -724,9 +725,8 @@ find_identical_ends (struct file_data filevec[]) middle_guess = guess_lines (lines, p0 - buffer0, p1 - filevec[1].prefix_end); suffix_guess = guess_lines (lines, p0 - buffer0, buffer1 + n1 - p1); - if (INT_ADD_WRAPV (buffered_prefix, - middle_guess + MIN (context, suffix_guess), - &alloc_lines1)) + if (ckd_add (&alloc_lines1, buffered_prefix, + middle_guess + MIN (context, suffix_guess))) xalloc_die (); linbuf1 = xnmalloc (alloc_lines1, sizeof *linbuf1);