http://bugzilla.spamassassin.org/show_bug.cgi?id=4121





------- Additional Comments From [EMAIL PROTECTED]  2005-03-09 07:29 -------
It's not initially apparent to me how the patch changes anything
($conf->{scores} should always be a reference to a $conf->{scoreset}->[#]
array), but if the issue is fixed, then +1. :)

Then again, wait a minute...  I came up with a theoretical way this could
happen, but I haven't verified anything yet:

If Storable doesn't understand references, ie: $conf->{scores} =
$conf->{scoreset}->[0], the first time the rule/score is parsed, it'll get the
right score.  Then Storable will revert {scores} and {scoreset} to different
arrays.  The second time the rule/score is parsed, the score is set in
{scoreset}, and then set_default_score goes through, doesn't see the score in
{scores} (because it's not a pointer into {scoreset} anymore), and sets
{scoreset} to the default value of 1.  Then at check() time, {scores} gets
turned back into a reference and points into {scoreset}, and you get a 1.0 for
the rule.


If this is the case (and the more I think about it, the more likely it is,) then
 we'll also want to double check any other "pointer references" we use and deal
with them appropriately in M::SA::copy_config().  Alternatively, we can kill the
horrible Storable/dclone kluge thing I wrote (it seemed like a good idea at the
time) and replace it with something better.

So yes, +1 on the patch.  BTW: I'd apply it to trunk, then set the ticket
milestone to 3.0.3 in case we actually do one before 3.1 comes out.



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

Reply via email to