Alexandre Julliard : patches: Avoid deadlocks when uncompressing large patches.
Alexandre Julliard
julliard at winehq.org
Thu Jul 26 08:37:18 CDT 2012
Module: tools
Branch: master
Commit: 4a01b75984f9120fe7b87881311b79f9c8b17d4b
URL: http://source.winehq.org/git/tools.git/?a=commit;h=4a01b75984f9120fe7b87881311b79f9c8b17d4b
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Jul 26 14:31:20 2012 +0200
patches: Avoid deadlocks when uncompressing large patches.
---
patches/filter | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/patches/filter b/patches/filter
index bed4dca..dbdb9ec 100755
--- a/patches/filter
+++ b/patches/filter
@@ -20,7 +20,7 @@
use strict;
use Email::MIME;
-use IPC::Open2;
+use File::Temp;
use Encode;
my $debug = 0;
@@ -127,16 +127,18 @@ sub decode_parts(@)
$name =~ /\.bz2$/ ||
$name =~ /\.gz$/)
{
- my $cmd = "gunzip -c";
+ my ($file, $filename) = File::Temp::tempfile();
+ my $cmd = "gunzip -c >$filename";
if ($type =~ /^application\/x-bzip2/ || $name =~ /\.bz2$/)
{
- $cmd = "bunzip2 -c";
+ $cmd = "bunzip2 -c >$filename";
}
- open2( *READ, *WRITE, $cmd) or die "cannot run $cmd";
+ open WRITE, "|$cmd" or die "cannot run $cmd";
print WRITE $part->body;
close WRITE;
- push @lines, filter_patch(<READ>);
- close READ;
+ push @lines, filter_patch(<$file>);
+ close $file;
+ unlink $filename;
}
elsif ($type =~ /^multipart/)
{
More information about the wine-cvs
mailing list