ports/186819: commit references a PR

dfilter service dfilter at FreeBSD.ORG
Mon Mar 3 18:30:06 UTC 2014


The following reply was made to PR ports/186819; it has been noted by GNATS.

From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:  
Subject: Re: ports/186819: commit references a PR
Date: Mon,  3 Mar 2014 18:19:24 +0000 (UTC)

 Author: adamw
 Date: Mon Mar  3 18:19:16 2014
 New Revision: 346947
 URL: http://svnweb.freebsd.org/changeset/ports/346947
 QAT: https://qat.redports.org/buildarchive/r346947/
 
 Log:
   Add a patch from SpamAssassin bug #6937 to improve compatibility
   with perl 5.18's changes to "each" ordering. This fixes the message:
   
   Use of each() on hash after insertion without resetting hash iterator results in undefined behavior, Perl interpreter: 0x2880d800 at /usr/local/lib/perl5/site_perl/5.18/Mail/SpamAssassin/AsyncLoop.pm line 363, <GEN84> line 98.
   
   PR:		ports/186819
   Approved by:	perl (maintainers)
 
 Added:
   head/mail/p5-Mail-SpamAssassin/files/patch-bug6937   (contents, props changed)
 Modified:
   head/japanese/p5-Mail-SpamAssassin/Makefile
   head/mail/p5-Mail-SpamAssassin-Alt/Makefile
   head/mail/p5-Mail-SpamAssassin/Makefile
 
 Modified: head/japanese/p5-Mail-SpamAssassin/Makefile
 ==============================================================================
 --- head/japanese/p5-Mail-SpamAssassin/Makefile	Mon Mar  3 18:03:24 2014	(r346946)
 +++ head/japanese/p5-Mail-SpamAssassin/Makefile	Mon Mar  3 18:19:16 2014	(r346947)
 @@ -1,7 +1,7 @@
  # Created by: TAOKA Fumiyoshi
  # $FreeBSD$
  
 -PORTREVISION=	4
 +PORTREVISION=	5
  CATEGORIES=	japanese mail perl5
  PKGNAMEPREFIX=	ja-p5-
  
 
 Modified: head/mail/p5-Mail-SpamAssassin-Alt/Makefile
 ==============================================================================
 --- head/mail/p5-Mail-SpamAssassin-Alt/Makefile	Mon Mar  3 18:03:24 2014	(r346946)
 +++ head/mail/p5-Mail-SpamAssassin-Alt/Makefile	Mon Mar  3 18:19:16 2014	(r346947)
 @@ -1,6 +1,6 @@
  # $FreeBSD$
  
 -PORTREVISION=	1
 +PORTREVISION=	2
  PKGNAMESUFFIX=	-Alt
  
  MAINTAINER=	ports at FreeBSD.org
 
 Modified: head/mail/p5-Mail-SpamAssassin/Makefile
 ==============================================================================
 --- head/mail/p5-Mail-SpamAssassin/Makefile	Mon Mar  3 18:03:24 2014	(r346946)
 +++ head/mail/p5-Mail-SpamAssassin/Makefile	Mon Mar  3 18:19:16 2014	(r346947)
 @@ -3,7 +3,7 @@
  
  PORTNAME=	Mail-SpamAssassin
  PORTVERSION=	3.3.2
 -PORTREVISION?=	8		# committer: please bump PORTREVISION on Slaves
 +PORTREVISION?=	9		# committer: please bump PORTREVISION on Slaves
  CATEGORIES?=	mail perl5
  MASTER_SITES=	${MASTER_SITE_APACHE:S/$/:apache/} ${MASTER_SITE_PERL_CPAN:S/$/:cpan/}
  MASTER_SITE_SUBDIR=	spamassassin/source/:apache Mail/:cpan
 
 Added: head/mail/p5-Mail-SpamAssassin/files/patch-bug6937
 ==============================================================================
 --- /dev/null	00:00:00 1970	(empty, because file is newly added)
 +++ head/mail/p5-Mail-SpamAssassin/files/patch-bug6937	Mon Mar  3 18:19:16 2014	(r346947)
 @@ -0,0 +1,97 @@
 +--- lib/Mail/SpamAssassin/AsyncLoop.pm.orig	2011-06-07 01:59:17.000000000 +0200
 ++++ lib/Mail/SpamAssassin/AsyncLoop.pm	2013-05-29 01:37:58.000000000 +0200
 +@@ -361,5 +361,12 @@ 
 +     $now = time;  # capture new timestamp, after possible sleep in 'select'
 + 
 +-    while (my($key,$ent) = each %$pending) {
 ++    # A callback routine may generate another DNS query, which may insert
 ++    # an entry into the %$pending hash thus invalidating the each() context.
 ++    # So, make sure that callbacks are not called while the each() context
 ++    # is open, or avoid using each().  [Bug 6937]
 ++    #
 ++  # while (my($key,$ent) = each %$pending) {
 ++    foreach my $key (keys %$pending) {
 ++      my $ent = $pending->{$key};
 +       my $id = $ent->{id};
 +       if (defined $ent->{poll_callback}) {  # call a "poll_callback" if exists
 +@@ -449,5 +456,6 @@ 
 +   my $foundcnt = 0;
 +   my $now = time;
 +-  while (my($key,$ent) = each %$pending) {
 ++  foreach my $key (keys %$pending) {
 ++    my $ent = $pending->{$key};
 +     dbg("async: aborting after %.3f s, %s: %s",
 +         $now - $ent->{start_time},
 +--- lib/Mail/SpamAssassin/Conf/Parser.pm.orig	2011-06-07 01:59:17.000000000 +0200
 ++++ lib/Mail/SpamAssassin/Conf/Parser.pm	2013-05-29 01:32:06.000000000 +0200
 +@@ -1249,5 +1249,5 @@ 
 +   my $mods = '';
 +   local ($1,$2);
 +-  if ($re =~ s/^m{//) {
 ++  if ($re =~ s/^m\{//) {
 +     $re =~ s/}([a-z]*)$//; $mods = $1;
 +   }
 +--- lib/Mail/SpamAssassin/DnsResolver.pm.orig	2011-06-07 01:59:17.000000000 +0200
 ++++ lib/Mail/SpamAssassin/DnsResolver.pm	2013-05-29 01:32:06.000000000 +0200
 +@@ -441,8 +441,14 @@ 
 +       if (!defined($timeout) || $timeout > 0)
 +         { $timer = $self->{main}->time_method("poll_dns_idle") }
 ++      $! = 0;
 +       ($nfound, $timeleft) = select($rout=$rin, undef, undef, $timeout);
 +     }
 +     if (!defined $nfound || $nfound < 0) {
 +-      warn "dns: select failed: $!";
 ++      if ($!) { warn "dns: select failed: $!\n" }
 ++      else    { info("dns: select interrupted") }
 ++      return;
 ++    } elsif (!$nfound) {
 ++      if (!defined $timeout) { warn("dns: select returned empty-handed\n") }
 ++      elsif ($timeout > 0) { dbg("dns: select timed out %.3f s", $timeout) }
 +       return;
 +     }
 +--- lib/Mail/SpamAssassin/Message.pm.orig	2011-06-07 01:59:17.000000000 +0200
 ++++ lib/Mail/SpamAssassin/Message.pm	2013-05-29 01:32:06.000000000 +0200
 +@@ -567,5 +567,5 @@ 
 +     # bug 5557: windows requires tmp file be closed before it can be rm'd
 +     if (ref $part->{'raw'} eq 'GLOB') {
 +-      close($part->{'raw'})  or die "error closing input file: $!";
 ++      close($part->{'raw'})  or warn "error closing input file: $!";
 +     }
 + 
 +--- lib/Mail/SpamAssassin/PerMsgStatus.pm.orig	2011-06-07 01:59:17.000000000 +0200
 ++++ lib/Mail/SpamAssassin/PerMsgStatus.pm	2013-05-29 01:32:06.000000000 +0200
 +@@ -421,6 +421,6 @@ 
 +     }
 + 
 +-    # ignore tests with 0 score in this scoreset
 +-    next if ($scores->{$test} == 0);
 ++    # ignore tests with 0 score (or undefined) in this scoreset
 ++    next if !$scores->{$test};
 + 
 +     # Go ahead and add points to the proper locations
 +@@ -1253,11 +1253,10 @@ 
 +               my $line = '';
 +               foreach my $test (sort @{$self->{test_names_hit}}) {
 +-                if (!$line) {
 +-                  $line .= $test . "=" . $self->{conf}->{scores}->{$test};
 +-                } else {
 +-                  $line .= $arg . $test . "=" . $self->{conf}->{scores}->{$test};
 +-                }
 ++                my $score = $self->{conf}->{scores}->{$test};
 ++                $score = '0'  if !defined $score;
 ++                $line .= $arg  if $line ne '';
 ++                $line .= $test . "=" . $score;
 +               }
 +-              $line ? $line : 'none';
 ++              $line ne '' ? $line : 'none';
 +             },
 + 
 +--- lib/Mail/SpamAssassin/Util.pm.orig	2013-05-29 01:29:59.000000000 +0200
 ++++ lib/Mail/SpamAssassin/Util.pm	2013-05-29 01:33:16.000000000 +0200
 +@@ -1588,5 +1588,5 @@ 
 +     return undef;   # invalid
 +   }
 +-  elsif ($re =~ s/^m{//) {              # m{foo/bar}
 ++  elsif ($re =~ s/^m\{//) {             # m{foo/bar}
 +     $delim = '}';
 +   }
 _______________________________________________
 svn-ports-all at freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-ports-all
 To unsubscribe, send any mail to "svn-ports-all-unsubscribe at freebsd.org"
 


More information about the freebsd-perl mailing list