summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-10-27 01:16:25 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-10-27 01:16:25 +0000
commitd090f17f21c1b938e9aa97c14e9e2d7e079b4420 (patch)
tree517d6d448e3a5b50b908e7ca19b822f88cc8d873 /parse.y
parent197e7b812c8ab14a7b61b7d0425c70768453ac65 (diff)
* iseq.c (rb_iseq_compile_with_option): Instead of testing
respond_to, just check if the argument is actually a file, because by calling user-defined gets something weired can happen. Patch by Glass_saga. [ruby-dev:40202] [Bug #2861] * parse.y (ripper_initialize): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y6
1 files changed, 2 insertions, 4 deletions
diff --git a/parse.y b/parse.y
index fc22beac23..ac3ec3aca3 100644
--- a/parse.y
+++ b/parse.y
@@ -541,7 +541,6 @@ static int lvar_defined_gen(struct parser_params*, ID);
#include "eventids1.c"
#include "eventids2.c"
-static ID ripper_id_gets;
static VALUE ripper_dispatch0(struct parser_params*,ID);
static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
@@ -11083,7 +11082,7 @@ ripper_warningS(struct parser_params *parser, const char *fmt, const char *str)
static VALUE
ripper_lex_get_generic(struct parser_params *parser, VALUE src)
{
- return rb_funcall(src, ripper_id_gets, 0);
+ return rb_io_gets(src);
}
static VALUE
@@ -11119,7 +11118,7 @@ ripper_initialize(int argc, VALUE *argv, VALUE self)
TypedData_Get_Struct(self, struct parser_params, &parser_data_type, parser);
rb_scan_args(argc, argv, "12", &src, &fname, &lineno);
- if (rb_obj_respond_to(src, ripper_id_gets, 0)) {
+ if (RB_TYPE_P(src, T_FILE)) {
parser->parser_lex_gets = ripper_lex_get_generic;
}
else {
@@ -11283,7 +11282,6 @@ Init_ripper(void)
{
parser_data_type.parent = RTYPEDDATA_TYPE(rb_parser_new());
- ripper_id_gets = rb_intern("gets");
ripper_init_eventids1();
ripper_init_eventids2();
/* ensure existing in symbol table */