aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2019-08-11 19:23:23 +0300
committerEli Zaretskii2019-08-11 19:23:23 +0300
commit94644d862c9a54a5ebe8265fbba04bdd0c973065 (patch)
tree9dc766ec40ebc4cf7296f789e52dd34f113aaf47 /src
parent73877cb3a781d667b2c03ed5a30add5058d1333b (diff)
downloademacs-94644d862c9a54a5ebe8265fbba04bdd0c973065.tar.gz
emacs-94644d862c9a54a5ebe8265fbba04bdd0c973065.zip
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)
2542 ptr->u.s.u.chain = cons_free_list; 2542 ptr->u.s.u.chain = cons_free_list;
2543 ptr->u.s.car = dead_object (); 2543 ptr->u.s.car = dead_object ();
2544 cons_free_list = ptr; 2544 cons_free_list = ptr;
2545 if (INT_ADD_WRAPV (consing_until_gc, sizeof *ptr, &consing_until_gc)) 2545 if (consing_until_gc <= 0)
2546 consing_until_gc += sizeof *ptr;
2547 else if (INT_ADD_WRAPV (consing_until_gc, sizeof *ptr, &consing_until_gc))
2546 consing_until_gc = OBJECT_CT_MAX; 2548 consing_until_gc = OBJECT_CT_MAX;
2547 gcstat.total_free_conses++; 2549 gcstat.total_free_conses++;
2548} 2550}