about summary refs log tree commit
diff options
context:
space:
mode:
-rw-r--r--lib/Net/Cmd.pm8
1 files changed, 2 insertions, 6 deletions
diff --git a/lib/Net/Cmd.pm b/lib/Net/Cmd.pm
index 2bb790d..0b1bbe1 100644
--- a/lib/Net/Cmd.pm
+++ b/lib/Net/Cmd.pm
@@ -335,24 +335,20 @@ sub getline {
   my $rin = "";
   vec($rin, $fd, 1) = 1;
 
-  my $buf;
-
   until (scalar(@{${*$cmd}{'net_cmd_lines'}})) {
     my $timeout = $cmd->timeout || undef;
     my $rout;
 
     my $select_ret = select($rout = $rin, undef, undef, $timeout);
     if ($select_ret > 0) {
-      unless (sysread($cmd, $buf = "", 1024)) {
+      unless (sysread($cmd, $partial, 1024, length($partial))) {
         my $err = $!;
         $cmd->close;
         $cmd->_set_status_closed($err);
         return;
       }
 
-      substr($buf, 0, 0) = $partial;    ## prepend from last sysread
-
-      my @buf = split(/\015?\012/, $buf, -1);    ## break into lines
+      my @buf = split(/\015?\012/, $partial, -1);    ## break into lines
 
       $partial = pop @buf;