* string.c (sym_call): use exact argument array interface.

[ruby-core:14279]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2007-12-23 02:26:45 +00:00
parent 64bc558cc5
commit e3897c538c
4 changed files with 19 additions and 13 deletions

View File

@ -1,3 +1,8 @@
Sun Dec 23 11:26:43 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (sym_call): use exact argument array interface.
[ruby-core:14279]
Sun Dec 23 11:01:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org> Sun Dec 23 11:01:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (rb_io_binmode_m): removed C99ism. * io.c (rb_io_binmode_m): removed C99ism.

View File

@ -497,3 +497,13 @@ assert_equal 'ok', %q{
result result
end end
} }
assert_equal "ok", %q{
class Bar
def bar; :ok; end
end
def foo
yield(Bar.new) if block_given?
end
foo(&:bar)
}, '[ruby-core:14279]'

View File

@ -3,13 +3,6 @@
# So all tests will cause failure. # So all tests will cause failure.
# #
assert_normal_exit %q{
def foo(&block)
yield if block
end
foo(&:bar)
}, '[ruby-core:14279]'
assert_equal 'ok', %q{ assert_equal 'ok', %q{
open("tmp", "w") {|f| f.write "a\u00FFb" } open("tmp", "w") {|f| f.write "a\u00FFb" }
s = open("tmp", "r:iso-8859-1:utf-8") {|f| s = open("tmp", "r:iso-8859-1:utf-8") {|f|

View File

@ -5519,17 +5519,15 @@ sym_to_sym(VALUE sym)
} }
static VALUE static VALUE
sym_call(VALUE args, VALUE sym) sym_call(VALUE args, VALUE sym, int argc, VALUE *argv)
{ {
VALUE obj; VALUE obj;
if (RARRAY_LEN(args) < 1) { if (argc < 1) {
rb_raise(rb_eArgError, "no receiver given"); rb_raise(rb_eArgError, "no receiver given");
} }
obj = RARRAY_PTR(args)[0]; obj = argv[0];
return rb_funcall3(obj, (ID)sym, return rb_funcall3(obj, (ID)sym, argc - 1, argv + 1);
RARRAY_LEN(args) - 1,
RARRAY_PTR(args) + 1);
} }
/* /*