aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--parse.y11
2 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 905ca83b2f..d147709e3b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Oct 10 00:09:54 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (ripper_initialize): rollback obj_respond_to().
+ fixed: [ruby-dev:27406]
+
Sat Oct 8 19:49:42 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (Init_Binding): add Binding#dup method. [yarv-dev:666]
diff --git a/parse.y b/parse.y
index 5235bbff60..f254817d22 100644
--- a/parse.y
+++ b/parse.y
@@ -8953,6 +8953,15 @@ ripper_s_allocate(VALUE klass)
return self;
}
+static int
+obj_respond_to(VALUE obj, VALUE mid)
+{
+ VALUE st;
+
+ st = rb_funcall(obj, rb_intern("respond_to?"), 2, mid, Qfalse);
+ return RTEST(st);
+}
+
#define ripper_initialized_p(r) ((r)->parser_lex_input != 0)
/*
@@ -8973,7 +8982,7 @@ ripper_initialize(int argc, VALUE *argv, VALUE self)
Data_Get_Struct(self, struct parser_params, parser);
rb_scan_args(argc, argv, "12", &src, &fname, &lineno);
- if (rb_respond_to(src, ripper_id_gets)) {
+ if (obj_respond_to(src, ID2SYM(ripper_id_gets))) {
parser->parser_lex_gets = ripper_lex_get_generic;
}
else {