diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2019-08-11 16:42:38 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2019-08-11 17:10:48 -0700 |
commit | 57fc1a5f7c49fbe7288de6ad567c934db2ceaf96 (patch) | |
tree | 3bcf2eac0a4d966dbad0729caf57c22da7fa30c0 /src/casefiddle.c | |
parent | f01365f62c921407acead13bb350816a313a8c42 (diff) | |
download | emacs-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.c | 3 |
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; |