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.