You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by fe...@apache.org on 2006/09/04 01:08:00 UTC

svn commit: r439872 - in /spamassassin/trunk/lib/Mail: ./ SpamAssassin/ SpamAssassin/Message/

Author: felicity
Date: Sun Sep  3 16:07:59 2006
New Revision: 439872

URL: http://svn.apache.org/viewvc?view=rev&rev=439872
Log:
instead of trying to delete specific names out of objects which may cause circular references, just go ahead and remove all entries from the self hash in finish() -- the object is expected to go away after finish() is called, so this shouldn't be an issue.

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgLearner.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Plugin.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin.pm?view=diff&rev=439872&r1=439871&r2=439872
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin.pm Sun Sep  3 16:07:59 2006
@@ -1332,9 +1332,7 @@
 
   $self->{resolver}->finish();
 
-  foreach(keys %{$self}) {
-    delete $self->{$_};
-  }
+  %{$self} = ();
 }
 
 ###########################################################################

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm?view=diff&rev=439872&r1=439871&r2=439872
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Bayes.pm Sun Sep  3 16:07:59 2006
@@ -263,7 +263,7 @@
   # use Carp qw(cluck); cluck "stack trace at untie";
 
   $self->{store}->untie_db();
-  delete $self->{store};
+  %{$self} = ();
 }
 
 sub sa_die { Mail::SpamAssassin::sa_die(@_); }

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm?view=diff&rev=439872&r1=439871&r2=439872
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm Sun Sep  3 16:07:59 2006
@@ -3016,8 +3016,7 @@
 
 sub finish {
   my ($self) = @_;
-  delete $self->{parser};
-  delete $self->{main};
+  %{$self} = ();
 }
 
 ###########################################################################

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm?view=diff&rev=439872&r1=439871&r2=439872
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/DnsResolver.pm Sun Sep  3 16:07:59 2006
@@ -501,10 +501,7 @@
 sub finish {
   my ($self) = @_;
   $self->finish_socket();
-  if (!$self->{no_resolver}) {
-    delete $self->{res};
-  }
-  delete $self->{main};
+  %{$self} = ();
 }
 
 ###########################################################################

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm?view=diff&rev=439872&r1=439871&r2=439872
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm Sun Sep  3 16:07:59 2006
@@ -516,15 +516,10 @@
 
   # Clean ourself up
   $self->finish_metadata();
-  undef $self->{pristine_headers};
-  undef $self->{pristine_body};
-  delete $self->{pristine_headers};
-  delete $self->{pristine_body};
-  delete $self->{text_decoded};
-  delete $self->{text_rendered};
 
-  # Destroy the tree ...
-  $self->SUPER::finish();
+  # wipe out all of our pointers and such -- since our tree is one-way, wiping
+  # out body_parts here will wipe out the rest of the tree.
+  %{$self} = ();
 }
 
 # ---------------------------------------------------------------------------

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata.pm?view=diff&rev=439872&r1=439871&r2=439872
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message/Metadata.pm Sun Sep  3 16:07:59 2006
@@ -86,8 +86,7 @@
 
 sub finish {
   my ($self) = @_;
-  delete $self->{msg};
-  delete $self->{strings};
+  %{$self} = ();
 }
 
 1;

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm?view=diff&rev=439872&r1=439871&r2=439872
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm Sun Sep  3 16:07:59 2006
@@ -641,36 +641,5 @@
 
 # ---------------------------------------------------------------------------
 
-=item finish()
-
-Clean up the object so that it can be destroyed.
-
-=cut
-
-sub finish {
-  my ($self) = @_;
-
-  foreach my $part ( $self->find_parts(qr/./) ) {
-    foreach (
-      'headers',
-      'raw_headers',
-      'header_order',
-      'raw',
-      'decoded',
-      'rendered',
-      'visible_rendered',
-      'invisible_rendered',
-      'type',
-      'rendered_type',
-      'body_parts',
-    ) {
-      undef $part->{$_};
-      delete $part->{$_};
-    }
-  }
-}
-
-# ---------------------------------------------------------------------------
-
 1;
 __END__

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgLearner.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgLearner.pm?view=diff&rev=439872&r1=439871&r2=439872
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgLearner.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgLearner.pm Sun Sep  3 16:07:59 2006
@@ -177,10 +177,7 @@
 
 sub finish {
   my $self = shift;
-  delete $self->{main};
-  delete $self->{msg};
-  delete $self->{conf};
-  delete $self->{bayes_scanner};
+  %{$self} = ();
 }
 
 ###########################################################################

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm?view=diff&rev=439872&r1=439871&r2=439872
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm Sun Sep  3 16:07:59 2006
@@ -1365,14 +1365,10 @@
 	  permsgstatus => $self
 	});
 
-  # explicitly delete just the members that may cause circular
-  # refs, instead of deleting everything; this is a lot more
-  # efficient
-  delete $self->{main};
-  delete $self->{msg};
-  delete $self->{conf};
-  delete $self->{async};
-  delete $self->{resolver};
+  # Delete out all of the members of $self.  This will remove any direct
+  # circular references and let the memory get reclaimed while also being more
+  # efficient than a foreach() loop over the keys.
+  %{$self} = ();
 }
 
 sub finish_tests {

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin.pm?view=diff&rev=439872&r1=439871&r2=439872
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin.pm Sun Sep  3 16:07:59 2006
@@ -752,7 +752,7 @@
 
 sub finish {
   my ($self) = @_;
-  delete $self->{main};
+  %{$self} = ();
 }
 
 =head1 HELPER APIS