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/alloc.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/alloc.c')
| -rw-r--r-- | src/alloc.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/alloc.c b/src/alloc.c index d9022ac46c3..8227feadae5 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -2542,9 +2542,8 @@ free_cons (struct Lisp_Cons *ptr) ptr->u.s.u.chain = cons_free_list; ptr->u.s.car = dead_object (); cons_free_list = ptr; - if (consing_until_gc <= 0) - consing_until_gc += sizeof *ptr; - else if (INT_ADD_WRAPV (consing_until_gc, sizeof *ptr, &consing_until_gc)) + int incr = sizeof *ptr; + if (INT_ADD_WRAPV (consing_until_gc, incr, &consing_until_gc)) consing_until_gc = OBJECT_CT_MAX; gcstat.total_free_conses++; } |
