You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2014/12/18 14:20:29 UTC

svn commit: r1646453 - /spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm

Author: mmartinec
Date: Thu Dec 18 13:20:29 2014
New Revision: 1646453

URL: http://svn.apache.org/r1646453
Log:
small optimization: avoid unnecessary copying when reading from a temp file in SA::Message::Node

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm?rev=1646453&r1=1646452&r2=1646453&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message/Node.pm Thu Dec 18 13:20:29 2014
@@ -272,8 +272,9 @@ sub raw {
     my $fd = $self->{'raw'};
     seek($fd, 0, 0)  or die "message: cannot rewind file: $!";
 
-    my($inbuf,$nread,$raw_str); $raw_str = '';
-    while ( $nread=sysread($fd,$inbuf,16384) ) { $raw_str .= $inbuf }
+    # dbg("message: (raw) reading mime part from a temporary file");
+    my($nread,$raw_str); $raw_str = '';
+    while ( $nread=sysread($fd, $raw_str, 16384, length $raw_str) ) { }
     defined $nread  or die "error reading: $!";
     my @array = split(/^/m, $raw_str, -1);
 
@@ -308,8 +309,9 @@ sub decode {
       my $fd = $self->{'raw'};
       seek($fd, 0, 0)  or die "message: cannot rewind file: $!";
 
-      my($inbuf,$nread,$raw_str); $raw = '';
-      while ( $nread=sysread($fd,$inbuf,16384) ) { $raw .= $inbuf }
+      # dbg("message: (decode) reading mime part from a temporary file");
+      my($nread,$raw_str); $raw = '';
+      while ( $nread=sysread($fd, $raw, 16384, length $raw) ) { }
       defined $nread  or die "error reading: $!";
 
       dbg("message: empty message read from a temp file")  if $raw eq '';