summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-09 16:09:55 +0000
committertenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-09 16:09:55 +0000
commit052f204dcbb3d02509a47e8bd559a444a3f81160 (patch)
tree7f0b58cad34ab2c51edbb33abea5c817e7c6cc51
parent5869de449fe535321a1f43d3ca59c22cdf610e9e (diff)
* ext/psych/parser.c: parse raises a TypeError when nil is passed in.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--ext/psych/parser.c1
-rw-r--r--test/psych/test_psych.rb6
3 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index a227b8404f..44b80d7f22 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat Apr 10 01:08:53 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/parser.c: parse raises a TypeError when nil is passed in.
+
Sat Apr 10 00:01:51 2010 Yusuke Endoh <mame@tsg.ne.jp>
* ext/pty/lib/expect.rb: preserve buffer read, instead of discard.
diff --git a/ext/psych/parser.c b/ext/psych/parser.c
index dd64c25101..5f5b2537c6 100644
--- a/ext/psych/parser.c
+++ b/ext/psych/parser.c
@@ -57,6 +57,7 @@ static VALUE parse(VALUE self, VALUE yaml)
if(rb_respond_to(yaml, id_read)) {
yaml_parser_set_input(&parser, io_reader, (void *)yaml);
} else {
+ Check_Type(yaml, T_STRING);
yaml_parser_set_input_string(
&parser,
(const unsigned char *)StringValuePtr(yaml),
diff --git a/test/psych/test_psych.rb b/test/psych/test_psych.rb
index 22baa1489e..91c67b1664 100644
--- a/test/psych/test_psych.rb
+++ b/test/psych/test_psych.rb
@@ -4,6 +4,12 @@ require 'stringio'
require 'tempfile'
class TestPsych < Psych::TestCase
+ def test_load_argument_error
+ assert_raises(TypeError) do
+ Psych.load nil
+ end
+ end
+
def test_dump_stream
things = [22, "foo \n", {}]
stream = Psych.dump_stream(*things)