aboutsummaryrefslogtreecommitdiffstats
path: root/src/image.c
diff options
context:
space:
mode:
authorPaul Eggert2019-08-11 16:42:38 -0700
committerPaul Eggert2019-08-11 17:10:48 -0700
commit57fc1a5f7c49fbe7288de6ad567c934db2ceaf96 (patch)
tree3bcf2eac0a4d966dbad0729caf57c22da7fa30c0 /src/image.c
parentf01365f62c921407acead13bb350816a313a8c42 (diff)
downloademacs-57fc1a5f7c49fbe7288de6ad567c934db2ceaf96.tar.gz
emacs-57fc1a5f7c49fbe7288de6ad567c934db2ceaf96.zip
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/image.c')
-rw-r--r--src/image.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/image.c b/src/image.c
index 81d8cb4e2b2..a59be0cd8ff 100644
--- a/src/image.c
+++ b/src/image.c
@@ -6463,7 +6463,6 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
6463 png_uint_32 row_bytes; 6463 png_uint_32 row_bytes;
6464 bool transparent_p; 6464 bool transparent_p;
6465 struct png_memory_storage tbr; /* Data to be read */ 6465 struct png_memory_storage tbr; /* Data to be read */
6466 ptrdiff_t nbytes;
6467 Emacs_Pix_Container ximg, mask_img = NULL; 6466 Emacs_Pix_Container ximg, mask_img = NULL;
6468 6467
6469 /* Find out what file to load. */ 6468 /* Find out what file to load. */
@@ -6660,7 +6659,8 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
6660 row_bytes = png_get_rowbytes (png_ptr, info_ptr); 6659 row_bytes = png_get_rowbytes (png_ptr, info_ptr);
6661 6660
6662 /* Allocate memory for the image. */ 6661 /* Allocate memory for the image. */
6663 if (INT_MULTIPLY_WRAPV (row_bytes, sizeof *pixels, &nbytes) 6662 ptrdiff_t nbytes = sizeof *pixels;
6663 if (INT_MULTIPLY_WRAPV (row_bytes, nbytes, &nbytes)
6664 || INT_MULTIPLY_WRAPV (nbytes, height, &nbytes)) 6664 || INT_MULTIPLY_WRAPV (nbytes, height, &nbytes))
6665 memory_full (SIZE_MAX); 6665 memory_full (SIZE_MAX);
6666 c->pixels = pixels = xmalloc (nbytes); 6666 c->pixels = pixels = xmalloc (nbytes);