summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--eval.c5
-rw-r--r--version.h2
3 files changed, 12 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 22ce5b29fa..5829195977 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Mon Dec 14 11:47:31 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_method_missing): adjusted format and argument number.
+
+ * eval.c (rb_call): fixed for super in cached method.
+ [ruby-dev:39757]
+n
+
Mon Dec 14 11:40:35 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* hash.c (ruby_setenv): get rid of crash in Solaris 8 and 10.
diff --git a/eval.c b/eval.c
index c11b96fe37..ab7dbd0b4f 100644
--- a/eval.c
+++ b/eval.c
@@ -5699,7 +5699,7 @@ rb_method_missing(argc, argv, obj)
exc = rb_eNameError;
}
else if (last_call_status & CSTAT_SUPER) {
- format = "super: no superclass method `%s'";
+ format = "super: no superclass method `%s' for %s";
}
if (!format) {
format = "undefined method `%s' for %s";
@@ -6145,13 +6145,14 @@ rb_call(klass, recv, mid, argc, argv, scope, self)
ent = cache + EXPR1(klass, mid);
if (ent->mid == mid && ent->klass == klass) {
if (!ent->method)
- return method_missing(recv, mid, argc, argv, scope==2?CSTAT_VCALL:0);
+ goto nomethod;
klass = ent->origin;
id = ent->mid0;
noex = ent->noex;
body = ent->method;
}
else if ((body = rb_get_method_body(&klass, &id, &noex)) == 0) {
+ nomethod:
if (scope == 3) {
return method_missing(recv, mid, argc, argv, CSTAT_SUPER);
}
diff --git a/version.h b/version.h
index 09ee69e604..ad12db4e23 100644
--- a/version.h
+++ b/version.h
@@ -2,7 +2,7 @@
#define RUBY_RELEASE_DATE "2009-12-14"
#define RUBY_VERSION_CODE 187
#define RUBY_RELEASE_CODE 20091214
-#define RUBY_PATCHLEVEL 232
+#define RUBY_PATCHLEVEL 233
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8