diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-18 06:31:42 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-18 06:31:42 +0000 |
commit | c4d216793b4c74b725c72679149d6db82a2d7597 (patch) | |
tree | f6b61cede10f2ec9e5e631d207d6e66551d4698b | |
parent | 15b974893465795b567945be53d17983b6089749 (diff) | |
download | ruby-c4d216793b4c74b725c72679149d6db82a2d7597.tar.gz |
intern.h: rb_f_notimplement for ext on Windows
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50527 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | include/ruby/intern.h | 4 | ||||
-rw-r--r-- | test/-ext-/test_notimplement.rb | 4 | ||||
-rw-r--r-- | win32/win32.c | 2 |
4 files changed, 17 insertions, 0 deletions
@@ -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 |