Semi-hack to fix the rebless + overload behavior on 5.8
Shawn M Moore [Sun, 8 Mar 2009 07:52:48 +0000 (03:52 -0400)]
lib/Class/MOP/Class.pm
lib/Class/MOP/Instance.pm

index cc615f9..7a7b1f2 100644 (file)
@@ -427,7 +427,8 @@ sub rebless_instance {
         || confess "You may rebless only into a subclass of (". $old_metaclass->name ."), of which (". $self->name .") isn't.";
 
     # rebless!
-    $meta_instance->rebless_instance_structure($instance, $self);
+    # we use $_[1] here because of t/306_rebless_overload.t regressions on 5.8.8
+    $meta_instance->rebless_instance_structure($_[1], $self);
 
     foreach my $attr ( $self->compute_all_applicable_attributes ) {
         if ( $attr->has_value($instance) ) {
index 36aa833..bf37523 100644 (file)
@@ -154,7 +154,9 @@ sub strengthen_slot_value {
 
 sub rebless_instance_structure {
     my ($self, $instance, $metaclass) = @_;
-    bless $instance, $metaclass->name;
+
+    # we use $_[1] here because of t/306_rebless_overload.t regressions on 5.8.8
+    bless $_[1], $metaclass->name;
 }
 
 sub is_dependent_on_superclasses {