Fix previous changes
gfx [Sat, 3 Oct 2009 05:57:05 +0000 (14:57 +0900)]
Makefile.PL
lib/Mouse/Meta/Module.pm

index ab6479f..df76048 100755 (executable)
@@ -54,6 +54,7 @@ sub create_moose_compatibility_test {
         '010-isa-or.t'     => "Mouse has a [BUG]",
 
         '052-undefined-type-in-union.t' => "Mouse accepts undefined type as a member of union types",
+        '054-anon-leak.t'     => 'Moose has memory leaks',
 
         '600-tiny-tiny.t'     => "Moose doesn't support ::Tiny",
         '601-tiny-mouse.t'    => "Moose doesn't support ::Tiny",
index 6079af6..25831a9 100755 (executable)
@@ -266,16 +266,18 @@ sub get_method_list {
 
         return if !$serial_id;
 
-        @{$self->{superclasses}} = (); # clear @ISA
-        %{$self->namespace}      = (); # clear the stash
+        # @ISA is a magical variable, so we clear it manually.
+        @{$self->{superclasses}} = () if exists $self->{superclasses};
+
+        # Then, clear the symbol table hash
+        %{$self->namespace} = ();
 
         my $name = $self->name;
         delete $METAS{$name};
 
-        $name =~ s/::\d+$//;
+        $name =~ s/ $serial_id \z//xms;
 
         no strict 'refs';
-
         delete ${$name}{ $serial_id . '::' };
 
         return;