From 295d648f766d46c5da059dac26b0373f986b6a28 Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Wed, 22 Nov 2023 15:23:04 +0000 Subject: [PATCH] [wasm] Use xmalloc/xfree for jmpbuf allocation to trigger GC properly `rb_vm_tag_jmpbuf_{init,deinit}` are safe to raise exception since the given tag is not yet pushed to `ec->tag` or already popped from it at the time, so `ec->tag` is always valid and it's safe to raise exception when xmalloc fails. --- vm_core.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vm_core.h b/vm_core.h index f7f0f7f2ca..fcac71b2e5 100644 --- a/vm_core.h +++ b/vm_core.h @@ -913,13 +913,13 @@ typedef rb_jmpbuf_t *rb_vm_tag_jmpbuf_t; static inline void rb_vm_tag_jmpbuf_init(rb_vm_tag_jmpbuf_t *jmpbuf) { - *jmpbuf = malloc(sizeof(rb_jmpbuf_t)); + *jmpbuf = ruby_xmalloc(sizeof(rb_jmpbuf_t)); } static inline void rb_vm_tag_jmpbuf_deinit(const rb_vm_tag_jmpbuf_t *jmpbuf) { - free(*jmpbuf); + ruby_xfree(*jmpbuf); } #else typedef rb_jmpbuf_t rb_vm_tag_jmpbuf_t;