Index: vm_eval.c
===================================================================
--- vm_eval.c	(revision 3551)
+++ vm_eval.c	(working copy)
@@ -442,7 +442,12 @@
 	    klass = self;
 	    break;
 	default:
-	    klass = 0;
+	    if (self == rb_vm_top_self()) {
+		klass = 0;
+	    }
+	    else {
+		klass = CLASS_OF(self);
+	    }
 	    break;
     }
     return eval_string(self, klass, src, scope, file, line);

