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