spamassassin-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mmarti...@apache.org
Subject svn commit: r684810 - in /spamassassin/trunk/lib/Mail/SpamAssassin: Message.pm Util/ScopedTimer.pm
Date Mon, 11 Aug 2008 16:48:23 GMT
Author: mmartinec
Date: Mon Aug 11 09:48:21 2008
New Revision: 684810

URL: http://svn.apache.org/viewvc?rev=684810&view=rev
Log:
Best practices: localized $@ and $! in DESTROY methods to prevent
potential calls to eval and calls to system routines in code executed
from a DESTROY method from clobbering global variables $@ and $!,
possibly affecting further error processing. Executing eval {} within
a DESTROY explains mysterious sightings when some outer eval captured
an event but $@ was empty.


Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Util/ScopedTimer.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm?rev=684810&r1=684809&r2=684810&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm Mon Aug 11 09:48:21 2008
@@ -573,6 +573,9 @@
 # temporary files are deleted even if the finish() method is omitted
 sub DESTROY {
   my $self = shift;
+  # best practices: prevent potential calls to eval and to system routines
+  # in code of a DESTROY method from clobbering global variables $@ and $! 
+  local($@,$!);  # keep outer error handling unaffected by DESTROY
   if ($self->{'tmpfiles'}) {
     unlink @{$self->{'tmpfiles'}};
   }

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Util/ScopedTimer.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Util/ScopedTimer.pm?rev=684810&r1=684809&r2=684810&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Util/ScopedTimer.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Util/ScopedTimer.pm Mon Aug 11 09:48:21 2008
@@ -39,6 +39,9 @@
 # OO hack: when the object goes out of scope, the timer ends.  neat!
 sub DESTROY {
   my $self = shift;
+  # best practices: prevent potential calls to eval and to system routines
+  # in code of a DESTROY method from clobbering global variables $@ and $! 
+  local($@,$!);  # keep outer error handling unaffected by DESTROY
   $self->{main}->timer_end($self->{timer});
 }
 



Mime
View raw message