]> git.eshelyaron.com Git - emacs.git/commitdiff
alloc.c: ckd_add, not by-hand checks
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 14 Jul 2024 22:37:50 +0000 (23:37 +0100)
committerEshel Yaron <me@eshelyaron.com>
Wed, 17 Jul 2024 21:53:48 +0000 (23:53 +0200)
* src/alloc.c (lmalloc, lrealloc): Prefer ckd_add to
by-hand checks for integer addition overflow.

(cherry picked from commit b77abd2bfeb13ae046b1f8c6157bd5a497665657)

src/alloc.c

index 37069ee4c9e0a250f543017b01152efa81065ab3..52f8a65d59d0cf1cf8118f65e3ccd52a06071bba 100644 (file)
@@ -1404,8 +1404,8 @@ lmalloc (size_t size, bool clearit)
       if (laligned (p, size) && (MALLOC_0_IS_NONNULL || size || p))
        return p;
       free (p);
-      size_t bigger = size + LISP_ALIGNMENT;
-      if (size < bigger)
+      size_t bigger;
+      if (!ckd_add (&bigger, size, LISP_ALIGNMENT))
        size = bigger;
     }
 }
@@ -1418,8 +1418,8 @@ lrealloc (void *p, size_t size)
       p = realloc (p, size);
       if (laligned (p, size) && (size || p))
        return p;
-      size_t bigger = size + LISP_ALIGNMENT;
-      if (size < bigger)
+      size_t bigger;
+      if (!ckd_add (&bigger, size, LISP_ALIGNMENT))
        size = bigger;
     }
 }