summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;