Skip to content

Commit 50d330e

Browse files
aardvark179eregon
authored andcommitted
Small refinement to rb_eval_cmd_kw implementation.
1 parent 96daf01 commit 50d330e

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

lib/truffle/truffle/cext.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1960,9 +1960,9 @@ def rb_gc_unregister_address(address)
19601960
end
19611961

19621962
def rb_eval_cmd_kw(cmd, args, kw_splat)
1963-
case cmd
1964-
when String
1965-
eval(cmd)
1963+
if (args.size > 0 && kw_splat != 0)
1964+
kwargs = args.pop
1965+
cmd.call(*args, **kwargs)
19661966
else
19671967
cmd.call(*args)
19681968
end

src/main/c/cext/call.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,5 +230,9 @@ VALUE rb_exec_recursive(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE arg)
230230
}
231231

232232
VALUE rb_eval_cmd_kw(VALUE cmd, VALUE args, int kw_splat) {
233-
return RUBY_CEXT_INVOKE("rb_eval_cmd_kw", cmd, args, INT2FIX(kw_splat));
233+
if (!RB_TYPE_P(cmd, T_STRING)) {
234+
return RUBY_CEXT_INVOKE("rb_eval_cmd_kw", cmd, args, INT2NUM(kw_splat));
235+
} else {
236+
return RUBY_CEXT_INVOKE("rb_eval_string", cmd);
237+
}
234238
}

0 commit comments

Comments
 (0)