diff options
author | Eli Zaretskii <eliz@gnu.org> | 2019-08-11 19:23:23 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2019-08-11 19:23:23 +0300 |
commit | 94644d862c9a54a5ebe8265fbba04bdd0c973065 (patch) | |
tree | 9dc766ec40ebc4cf7296f789e52dd34f113aaf47 /src | |
parent | 73877cb3a781d667b2c03ed5a30add5058d1333b (diff) | |
download | emacs-94644d862c9a54a5ebe8265fbba04bdd0c973065.tar.gz |
Fix garbage collection
* src/alloc.c (free_cons): Avoid false positives in
INT_ADD_WRAPV. (Bug#37006)
Diffstat (limited to 'src')
-rw-r--r-- | src/alloc.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/alloc.c b/src/alloc.c index 5e089311a27..d9022ac46c3 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -2542,7 +2542,9 @@ 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 (INT_ADD_WRAPV (consing_until_gc, sizeof *ptr, &consing_until_gc)) + if (consing_until_gc <= 0) + consing_until_gc += sizeof *ptr; + else if (INT_ADD_WRAPV (consing_until_gc, sizeof *ptr, &consing_until_gc)) consing_until_gc = OBJECT_CT_MAX; gcstat.total_free_conses++; } |