The following commit has been merged in the master branch:
commit 93f179a39dfd081e2a50dd258a322025004f6023
Author: Raphaël Hertzog <[email protected]>
Date:   Fri Feb 19 19:32:33 2010 +0100

    Dpkg::Compression::FileHandle: fix behaviour when the file is not open
    
    The syscall-like interface should not error out when the file has not been
    opened, it must simply return failure codes.

diff --git a/scripts/Dpkg/Compression/FileHandle.pm 
b/scripts/Dpkg/Compression/FileHandle.pm
index fcf5005..658a9f7 100644
--- a/scripts/Dpkg/Compression/FileHandle.pm
+++ b/scripts/Dpkg/Compression/FileHandle.pm
@@ -212,34 +212,43 @@ sub OPEN {
 sub CLOSE {
     my ($self) = shift;
     my $ret = 1;
-    $ret = *$self->{'file'}->close(@_) if *$self->{'file'}->opened();
+    if (defined *$self->{'file'}) {
+       $ret = *$self->{'file'}->close(@_) if *$self->{'file'}->opened();
+    } else {
+       $ret = 0;
+    }
     $self->cleanup();
     return $ret;
 }
 
 sub FILENO {
     my ($self) = shift;
-    return *$self->{"file"}->fileno(@_);
+    return *$self->{"file"}->fileno(@_) if defined *$self->{"file"};
+    return undef;
 }
 
 sub EOF {
     my ($self) = shift;
-    return *$self->{"file"}->eof(@_);
+    return *$self->{"file"}->eof(@_) if defined *$self->{"file"};
+    return 1;
 }
 
 sub SEEK {
     my ($self) = shift;
-    return *$self->{"file"}->seek(@_);
+    return *$self->{"file"}->seek(@_) if defined *$self->{"file"};
+    return 0;
 }
 
 sub TELL {
     my ($self) = shift;
-    return *$self->{"file"}->tell(@_);
+    return *$self->{"file"}->tell(@_) if defined *$self->{"file"};
+    return -1;
 }
 
 sub BINMODE {
     my ($self) = shift;
-    return *$self->{"file"}->binmode(@_);
+    return *$self->{"file"}->binmode(@_) if defined *$self->{"file"};
+    return undef;
 }
 
 ##

-- 
dpkg's main repository


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to