summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2024-12-11 14:09:22 -0500
committerPeter Zhu <peter@peterzhu.ca>2024-12-19 09:14:34 -0500
commitf02e31294c8159239f656379ccbb34e466c0ab43 (patch)
tree9f884813b03dac347d62dedf5f38caae532979a1
parenta1265601960a4de12ce88842bcd8f3fecdf3660c (diff)
Don't unpoison a NULL object
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/12385
-rw-r--r--gc/default/default.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gc/default/default.c b/gc/default/default.c
index ed4ab8f6ff..8df7162455 100644
--- a/gc/default/default.c
+++ b/gc/default/default.c
@@ -3246,8 +3246,10 @@ try_move(rb_objspace_t *objspace, rb_heap_t *heap, struct heap_page *free_page,
asan_unlock_freelist(free_page);
VALUE dest = (VALUE)free_page->freelist;
asan_lock_freelist(free_page);
- asan_unpoison_object(dest, false);
- if (!dest) {
+ if (dest) {
+ asan_unpoison_object(dest, false);
+ }
+ else {
/* if we can't get something from the freelist then the page must be
* full */
return false;