From f89a334b555d9f91f0bb5a7c58b3097960dd7fb8 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 13 Mar 2025 13:26:38 +0900 Subject: merge revision(s) bccec7fb468ad977be75e7e4c2644b4ea845ab0c, 5f8ebcada099351acbc22db264e7cd3773c2bdc4, e13575bb7938e9e5b6a79bfca1b3793123f479da, 4adcfc8cd7a17593a6590025da2b03eebf4fd63c: [Backport #19584] Fix crash in rb_gc_register_address [Bug #19584] Some C extensions pass a pointer to a global variable to rb_gc_register_address. However, if a GC is triggered inside of rb_gc_register_address, then the object could get swept since it does not exist on the stack. [Bug #19584] Register global variable address before assignment [Bug #19584] Register global variables before assignment [Bug #19584] [DOC] Tweek description of `rb_gc_register_address` --- ruby.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ruby.c') diff --git a/ruby.c b/ruby.c index 920a2490d2..09c81db86c 100644 --- a/ruby.c +++ b/ruby.c @@ -647,8 +647,8 @@ ruby_init_loadpath(void) # endif rb_obj_hide(selfpath); OBJ_FREEZE_RAW(selfpath); - rb_libruby_selfpath = selfpath; rb_gc_register_address(&rb_libruby_selfpath); + rb_libruby_selfpath = selfpath; # endif #endif -- cgit v1.2.3