summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2019-08-11 19:23:23 +0300
committerEli Zaretskii <eliz@gnu.org>2019-08-11 19:23:23 +0300
commit94644d862c9a54a5ebe8265fbba04bdd0c973065 (patch)
tree9dc766ec40ebc4cf7296f789e52dd34f113aaf47 /src
parent73877cb3a781d667b2c03ed5a30add5058d1333b (diff)
downloademacs-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.c4
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++;
}