From 962f0900018ecb10287b327d261e424fa5ccb755 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Mon, 11 Apr 2022 11:44:39 +1000 Subject: [PATCH] Fix Ruby 3.2 warning "undefining the allocator of T_DATA class swig_runtime_data" Ruby 3.2 (still in development) started warning about this, see https://bugs.ruby-lang.org/issues/18007. Note that the extension docs mention it in https://ruby-doc.org/core-3.1.1/doc/extension_rdoc.html#label-C+struct+to+Ruby+object: > The klass argument is the class for the object. The klass should > derive from `rb_cObject`, and the allocator must be set by calling > `rb_define_alloc_func` or `rb_undef_alloc_func`. So in this case we call `rb_undef_alloc_func` to fix the warning. Verified that this works in robinst/taglib-ruby#115. Fixes #2257. --- Lib/ruby/rubyrun.swg | 1 + 1 file changed, 1 insertion(+) diff --git a/Lib/ruby/rubyrun.swg b/Lib/ruby/rubyrun.swg index 7c94c4e12..e4c23bde5 100644 --- a/Lib/ruby/rubyrun.swg +++ b/Lib/ruby/rubyrun.swg @@ -413,6 +413,7 @@ SWIG_Ruby_SetModule(swig_module_info *pointer) { /* register a new class */ VALUE cl = rb_define_class("swig_runtime_data", rb_cObject); + rb_undef_alloc_func(cl); /* create and store the structure pointer to a global variable */ swig_runtime_data_type_pointer = Data_Wrap_Struct(cl, 0, 0, pointer); rb_define_readonly_variable("$swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, &swig_runtime_data_type_pointer);