From f5d3efdba2ea1db1fdc5cc1a62a71aa1e96fb1ad Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Fri, 17 Jan 2025 15:49:56 -0500 Subject: [PATCH] Don't compile rb_undefine_finalizer on Ruby 3.4.0 and 3.4.1 Ruby 3.4.0 and 3.4.1 have a bug where rb_undefine_finalizer is missing. This may fail to compile on some platforms. --- optional/capi/ext/finalizer_spec.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/optional/capi/ext/finalizer_spec.c b/optional/capi/ext/finalizer_spec.c index 83347da912..ef546aa5b1 100644 --- a/optional/capi/ext/finalizer_spec.c +++ b/optional/capi/ext/finalizer_spec.c @@ -10,7 +10,13 @@ static VALUE define_finalizer(VALUE self, VALUE obj, VALUE finalizer) { } static VALUE undefine_finalizer(VALUE self, VALUE obj) { +// Ruby 3.4.0 and 3.4.1 have a bug where rb_undefine_finalizer is missing +// See: https://bugs.ruby-lang.org/issues/20981 +#if RUBY_API_VERSION_CODE == 30400 && (RUBY_VERSION_TEENY == 0 || RUBY_VERSION_TEENY == 1) + return Qnil; +#else return rb_undefine_finalizer(obj); +#endif } void Init_finalizer_spec(void) {