summaryrefslogtreecommitdiff
path: root/src/casefiddle.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2019-08-11 16:42:38 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2019-08-11 17:10:48 -0700
commit57fc1a5f7c49fbe7288de6ad567c934db2ceaf96 (patch)
tree3bcf2eac0a4d966dbad0729caf57c22da7fa30c0 /src/casefiddle.c
parentf01365f62c921407acead13bb350816a313a8c42 (diff)
downloademacs-57fc1a5f7c49fbe7288de6ad567c934db2ceaf96.tar.gz
Prefer signed when testing for signed overflow
* src/alloc.c (free_cons): * src/casefiddle.c (do_casify_multibyte_string): * src/editfns.c (styled_format): * src/image.c (png_load_body): Use signed arguments to INT_MULTIPLY_WRAPV etc. This doesn’t fix any bugs, but GCC emits better code when all args are signed. Also, this removes the need for an if in free_cons (Bug#37006).
Diffstat (limited to 'src/casefiddle.c')
-rw-r--r--src/casefiddle.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/casefiddle.c b/src/casefiddle.c
index ee292dda9b3..6fcb5852141 100644
--- a/src/casefiddle.c
+++ b/src/casefiddle.c
@@ -265,8 +265,9 @@ do_casify_multibyte_string (struct casing_context *ctx, Lisp_Object obj)
ptrdiff_t size = SCHARS (obj), n;
USE_SAFE_ALLOCA;
+ ptrdiff_t casing_str_buf_size = sizeof (struct casing_str_buf);
if (INT_MULTIPLY_WRAPV (size, MAX_MULTIBYTE_LENGTH, &n)
- || INT_ADD_WRAPV (n, sizeof (struct casing_str_buf), &n))
+ || INT_ADD_WRAPV (n, casing_str_buf_size, &n))
n = PTRDIFF_MAX;
unsigned char *dst = SAFE_ALLOCA (n);
unsigned char *dst_end = dst + n;