summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--include/ruby/intern.h4
-rw-r--r--test/-ext-/test_notimplement.rb4
-rw-r--r--win32/win32.c2
4 files changed, 17 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index faf099b172..0e3ba2ef8d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Mon May 18 15:31:31 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * include/ruby/intern.h (rb_f_notimplement): should not respond to
+ not-implemented methods. as the address inside a DLL and the
+ imported address are different on Windows, use an exported
+ variable to share the same address.
+
Mon May 18 13:55:01 2015 Shugo Maeda <shugo@ruby-lang.org>
* lib/monitor.rb (mon_try_enter, mon_enter): should reset @mon_count
diff --git a/include/ruby/intern.h b/include/ruby/intern.h
index 127de00bb3..1d4d90a5ba 100644
--- a/include/ruby/intern.h
+++ b/include/ruby/intern.h
@@ -401,6 +401,10 @@ VALUE rb_eval_cmd(VALUE, VALUE, int);
int rb_obj_respond_to(VALUE, ID, int);
int rb_respond_to(VALUE, ID);
VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj);
+#if !defined(RUBY_EXPORT) && defined(_WIN32)
+RUBY_EXTERN VALUE (*const rb_f_notimplement_)(int, const VALUE *, VALUE);
+#define rb_f_notimplement (*rb_f_notimplement_)
+#endif
void rb_interrupt(void);
VALUE rb_apply(VALUE, ID, VALUE);
void rb_backtrace(void);
diff --git a/test/-ext-/test_notimplement.rb b/test/-ext-/test_notimplement.rb
index 22bb7f7b88..7394126fb1 100644
--- a/test/-ext-/test_notimplement.rb
+++ b/test/-ext-/test_notimplement.rb
@@ -7,4 +7,8 @@ class TestNotImplement < Test::Unit::TestCase
Bug.funcall(:notimplement)
}
end
+
+ def test_respond_to
+ assert_not_respond_to(Bug, :notimplement)
+ end
end
diff --git a/win32/win32.c b/win32/win32.c
index e17d35b0c2..b084e079fd 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -7356,6 +7356,8 @@ rb_w32_pow(double x, double y)
}
#endif
+VALUE (*const rb_f_notimplement_)(int, const VALUE *, VALUE) = rb_f_notimplement;
+
#if RUBY_MSVCRT_VERSION < 120
#include "missing/nextafter.c"
#endif