From aff5eaced4ca458bebc59b62502c2addc3d7364a Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Sat, 15 Aug 2020 13:19:23 +0900 Subject: [ruby/fiddle] Add workaround for RubyInstaller for Windows See comment for details. https://github.com/ruby/fiddle/commit/0c76f03dc4 --- ext/fiddle/fiddle.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'ext') diff --git a/ext/fiddle/fiddle.c b/ext/fiddle/fiddle.c index 5f2bd5ae20..5635ab327c 100644 --- a/ext/fiddle/fiddle.c +++ b/ext/fiddle/fiddle.c @@ -141,6 +141,20 @@ Init_fiddle(void) */ rb_eFiddleError = rb_define_class_under(mFiddle, "Error", rb_eStandardError); + /* + * Ruby installed by RubyInstaller for Windows always require + * bundled Fiddle because ruby_installer/runtime/dll_directory.rb + * requires Fiddle. It's used by + * rubygems/defaults/operating_system.rb. It means that the + * bundled Fiddle is always required on initialization. + * + * We just remove existing Fiddle::DLError here to override + * the bundled Fiddle. + */ + if (rb_const_defined(mFiddle, rb_intern("DLError"))) { + rb_const_remove(mFiddle, rb_intern("DLError")); + } + /* * Document-class: Fiddle::DLError * -- cgit v1.2.3