}
sub _metaclass_cache { # DEPRECATED
- my($class, $name) = @_;
+ my($self, $name) = @_;
Carp::cluck('_metaclass_cache() has been deprecated. Use Mouse::Util::get_metaclass_by_name() instead');
return $METAS{$name};
}
Scalar::Util::weaken $METAS{$package_name}
if $mortal;
- $meta->add_method(meta => sub{
+ $meta->add_method(meta => sub {
$self->initialize(ref($_[0]) || $_[0]);
});
return if !$serial_id;
# mortal anonymous class
+ # XXX: cleaning stash with threads causes panic/SEGV.
+ if(exists $INC{'threads.pm'}) {
+ # (caller)[2] indicates the caller's line number,
+ # which is zero when the current thread is joining.
+ return if( (caller)[2] == 0);
+ }
+
# @ISA is a magical variable, so we clear it manually.
@{$self->{superclasses}} = () if exists $self->{superclasses};
delete $METAS{$name};
$name =~ s/ $serial_id \z//xms;
-
no strict 'refs';
delete ${$name}{ $serial_id . '::' };
}
sub throw_error{
- my($class, $message, %args) = @_;
+ my($self, $message, %args) = @_;
local $Carp::CarpLevel = $Carp::CarpLevel + 1 + ($args{depth} || 0);
local $Carp::MaxArgNums = 20; # default is 8, usually we use named args which gets messier though
=head1 VERSION
-This document describes Mouse version 0.50_04
+This document describes Mouse version 0.57
=head1 SEE ALSO