about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <bofh@yhbt.net>2021-05-25 22:21:19 +0000
committerEric Wong <bofh@yhbt.net>2021-05-25 22:21:19 +0000
commit436ab3875707e8ff218cf66309d4e95348700e4f (patch)
tree5e0d5d1d99eca8de476d3e94803de92cd55bb3dd
parentb87a449ec8ae4809762831ccce6bb6bacb907b6a (diff)
downloadraindrops-436ab3875707e8ff218cf66309d4e95348700e4f.tar.gz
With GC.compact in Ruby 3.x, Ruby-defined constants need to be
explicitly marked to prevent movement.

Link: https://yhbt.net/kgio-public/CAAvYYt5Z5f2rMuXO5DMpR1-6uRvu_gXKDvqcyoZ+oNcLiTH39g@mail.gmail.com/T/
-rw-r--r--ext/raindrops/linux_inet_diag.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/ext/raindrops/linux_inet_diag.c b/ext/raindrops/linux_inet_diag.c
index 60c80f1..cabd427 100644
--- a/ext/raindrops/linux_inet_diag.c
+++ b/ext/raindrops/linux_inet_diag.c
@@ -696,6 +696,7 @@ void Init_raindrops_linux_inet_diag(void)
         rb_define_singleton_method(cIDSock, "new", ids_s_new, 0);
 
         cListenStats = rb_const_get(cRaindrops, rb_intern("ListenStats"));
+        rb_gc_register_mark_object(cListenStats); /* pin */
 
         rb_define_module_function(mLinux, "tcp_listener_stats",
                                   tcp_listener_stats, -1);