Bug#440943: libcompress-zlib-perl: Documentation and/or API inconsistencies

Magnus Holmgren holmgren at lysator.liu.se
Wed Sep 5 16:16:17 UTC 2007


Package: libcompress-zlib-perl
Version: 2.005-3
Severity: important
Tags: upstream

Compress::Zlib(3pm):

       $gz->gzclose
            Closes the compressed file. Any pending data is flushed to
            the file before it is closed.

            Returns 1 on success, 0 on failure.

The actual code:

sub Compress::Zlib::gzFile::gzclose
{
    my $self = shift ;
    my $gz = $self->[0] ;

    my $status = $gz->close() ;
    _save_gzerr($gz);
    return ! $status ;
}

IO::Compress::Gzip(3pm):

       close

           $z->close() ;
           close $z ;

       Returns true on success, otherwise 0.

Compress::Zlib::gzFile::gzclose inverts the result from the underlying
call, thus it returns 0 on success, 1 on failure. Contrary to the documentation.

On the other hand, Compress::Zlib::gzFile::gzflush() does indeed
return 1 on success and 0 on failure, which is the opposite of what
versions before 2.0 did, thus potentially breaking many applications.
Neither README nor changelog documents the change.

I haven't checked all subroutines, but gzwrite() and gzread() seem to
work the same.

-- 
Magnus Holmgren           holmgren at lysator.liu.se




More information about the pkg-perl-maintainers mailing list