From 6b57e2d988e965ed0cef252718f5df018c8617bd Mon Sep 17 00:00:00 2001 From: Arnaud Le Blanc Date: Sat, 2 Mar 2024 12:32:10 +0100 Subject: [PATCH] Fix GH-13569: GC buffer unnecessarily grows up to GC_MAX_BUF_SIZE when scanning WeakMaps --- Zend/tests/gh13569.phpt | 22 ++++++++++++++++++++++ Zend/zend_gc.c | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 Zend/tests/gh13569.phpt diff --git a/Zend/tests/gh13569.phpt b/Zend/tests/gh13569.phpt new file mode 100644 index 00000000000..8e5f74d6666 --- /dev/null +++ b/Zend/tests/gh13569.phpt @@ -0,0 +1,22 @@ +--TEST-- +GH-13569: GC buffer grows up to GC_MAX_BUF_SIZE when scanning WeakMaps +--FILE-- + +==DONE== +--EXPECT-- +==DONE== diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index 4051dd82f8a..572e3b66fd4 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -718,7 +718,7 @@ static void ZEND_FASTCALL gc_extra_root(zend_refcounted *ref) if (EXPECTED(GC_HAS_UNUSED())) { idx = GC_FETCH_UNUSED(); - } else if (EXPECTED(GC_HAS_NEXT_UNUSED_UNDER_THRESHOLD())) { + } else if (EXPECTED(GC_HAS_NEXT_UNUSED())) { idx = GC_FETCH_NEXT_UNUSED(); } else { gc_grow_root_buffer();