You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by jm...@apache.org on 2007/10/15 12:52:19 UTC
svn commit: r584726 -
/spamassassin/trunk/lib/Mail/SpamAssassin/PluginHandler.pm
Author: jm
Date: Mon Oct 15 03:52:09 2007
New Revision: 584726
URL: http://svn.apache.org/viewvc?rev=584726&view=rev
Log:
bug 5687: fix bug where duplicate loadplugin line results in eval rule method registered with invalid $self object
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/PluginHandler.pm
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PluginHandler.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/PluginHandler.pm?rev=584726&r1=584725&r2=584726&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PluginHandler.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PluginHandler.pm Mon Oct 15 03:52:09 2007
@@ -77,6 +77,16 @@
sub load_plugin {
my ($self, $package, $path, $silent) = @_;
+ # Don't load the same plugin twice!
+ # Do this *before* calling ->new(), otherwise eval rules will be
+ # registered on a nonexistent object
+ foreach my $old_plugin (@{$self->{plugins}}) {
+ if (ref($old_plugin) eq $package) {
+ dbg("plugin: did not register $package, already registered");
+ return;
+ }
+ }
+
my $ret;
if ($path) {
# bug 3717:
@@ -119,14 +129,6 @@
if ($@ || !$plugin) {
warn "plugin: failed to create instance of plugin $package: $@\n";
- }
-
- # Don't load the same plugin twice!
- foreach my $old_plugin (@{$self->{plugins}}) {
- if (ref($old_plugin) eq ref($plugin)) {
- dbg("plugin: did not register $plugin, already registered");
- return;
- }
}
if ($plugin) {