From 4db359156adb5aed102ec853f56c030ba40b1eca Mon Sep 17 00:00:00 2001 From: Ngan Pham Date: Mon, 24 May 2021 20:34:36 +0000 Subject: fix compatibility with GC.compact Constants defined in Ruby need to be explicitly marked when made static inside a C extension. Link: https://yhbt.net/kgio-public/CAAvYYt5Z5f2rMuXO5DMpR1-6uRvu_gXKDvqcyoZ+oNcLiTH39g@mail.gmail.com/T/ Commit-message-by: Eric Wong --- ext/kgio/accept.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ext/kgio/accept.c b/ext/kgio/accept.c index f1de39d..4bd9cfe 100644 --- a/ext/kgio/accept.c +++ b/ext/kgio/accept.c @@ -498,9 +498,12 @@ void init_kgio_accept(void) rb_define_const(mKgio, "SOCK_CLOEXEC", INT2NUM(SOCK_CLOEXEC)); localhost = rb_const_get(mKgio, rb_intern("LOCALHOST")); + rb_gc_register_mark_object(localhost); cKgio_Socket = rb_const_get(mKgio, rb_intern("Socket")); + rb_gc_register_mark_object(cKgio_Socket); cClientSocket = cKgio_Socket; mSocketMethods = rb_const_get(mKgio, rb_intern("SocketMethods")); + rb_gc_register_mark_object(mSocketMethods); rb_define_method(mSocketMethods, "kgio_addr!", addr_bang, 0); -- cgit v1.2.3-24-ge0c7