summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--iseq.c1
-rw-r--r--test/ruby/test_iseq.rb7
-rw-r--r--version.h6
4 files changed, 16 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index ef1dc69725..f64cef1451 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed May 20 01:47:23 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * iseq.c (rb_iseq_compile_with_option): check source type, must be
+ an IO or a String. [ruby-core:69219] [Bug #11159]
+
Fri May 15 05:01:25 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* symbol.c (Init_sym): make dsym_fstrs a hash compared by identity
diff --git a/iseq.c b/iseq.c
index de65dcbf33..9cf5df66a0 100644
--- a/iseq.c
+++ b/iseq.c
@@ -596,6 +596,7 @@ rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE absolute_path, VALUE li
if (RB_TYPE_P((src), T_FILE))
node = rb_parser_compile_file_path(parser, file, src, ln);
else {
+ StringValue(src);
node = rb_parser_compile_string_path(parser, file, src, ln);
if (!node) {
diff --git a/test/ruby/test_iseq.rb b/test/ruby/test_iseq.rb
index 4af440ae42..686646ddd8 100644
--- a/test/ruby/test_iseq.rb
+++ b/test/ruby/test_iseq.rb
@@ -134,4 +134,11 @@ class TestISeq < Test::Unit::TestCase
assert(!op.to_s.match(/^opt_/), "#{op}")
}
end
+
+ def test_invalid_source
+ bug11159 = '[ruby-core:69219] [Bug #11159]'
+ assert_raise(TypeError, bug11159) {ISeq.compile(nil)}
+ assert_raise(TypeError, bug11159) {ISeq.compile(:foo)}
+ assert_raise(TypeError, bug11159) {ISeq.compile(1)}
+ end
end
diff --git a/version.h b/version.h
index 8f6ccc3a25..a5e49021ca 100644
--- a/version.h
+++ b/version.h
@@ -1,10 +1,10 @@
#define RUBY_VERSION "2.2.3"
-#define RUBY_RELEASE_DATE "2015-05-15"
-#define RUBY_PATCHLEVEL 102
+#define RUBY_RELEASE_DATE "2015-05-20"
+#define RUBY_PATCHLEVEL 103
#define RUBY_RELEASE_YEAR 2015
#define RUBY_RELEASE_MONTH 5
-#define RUBY_RELEASE_DAY 15
+#define RUBY_RELEASE_DAY 20
#include "ruby/version.h"