Actions
Bug #3229
closediseq_s_load で TypeError 発生
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.2dev (2010-04-30 trunk 27566) [x86_64-darwin10.3.0]
Backport:
Description
=begin
[ruby-dev:40911] をチケットにさせて頂きます。
RubyGems の iseq ライブラリを利用して、文字列から compile した ISeq をロードさせようとすると
以下のように TypeError が発生します。
$ cat test.rb
require "iseq"
iseq = ISeq.compile("pust 'Hello World'")
ISeq.load(iseq.to_a)
$ ruby -v test.rb
ruby 1.9.2dev (2010-04-30 trunk 27566) [x86_64-darwin10.3.0]
test.rb:4:in load': can't convert nil into String (TypeError) from test.rb:4:in
'
iseq->filepath が nil の場合があるのに対応していないようです。
以下のパッチで上記のコードは動くようになりました。
Index: iseq.c¶
--- iseq.c (revision 27566)
+++ iseq.c (working copy)
@@ -465,7 +465,8 @@
name = CHECK_STRING(rb_ary_entry(data, i++));
filename = CHECK_STRING(rb_ary_entry(data, i++));
- filepath = CHECK_STRING(rb_ary_entry(data, i++));
-
filepath = rb_ary_entry(data, i++);
-
filepath = NIL_P(filepath) ? Qnil : CHECK_STRING(filepath);
line_no = CHECK_INTEGER(rb_ary_entry(data, i++));type = CHECK_SYMBOL(rb_ary_entry(data, i++));
=end
Actions
Like0
Like0Like0