Skip Menu |

This queue is for tickets about the Archive-Zip CPAN distribution.

Report information
The Basics
Id: 47223
Status: resolved
Priority: 0/
Queue: Archive-Zip

People
Owner: Nobody in particular
Requestors: csjewell [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 1.28
Fixed in: 1.26



Subject: (heisenbug) ::Archive::extractTree gives ::Member::extractToFileNamed a bad parameter.
Running "dmake test" on PAR::Dist and two modules that use it (PAR::Repository::Client, Perl::Dist) when Archive::Zip 1.28 is installed fails - in PAR::Dist's case, between tests 6 and 7, with the call stack shown below (I added $Carp::MaxArgLen = 0 to the test file and set PERL5OPT = -MCarp=verbose to get this.) ... mkdir C:\Documents and Settings\Curtis\Desktop\PAR-Dist-0.45\t\C:\: Invalid argument; The filename, directory name, or volume label syntax is incorrect at C:/bootperl/perl/lib/File/Path.pm line 118 File::Path::_mkpath('HASH(0xfbdfac)', 'ARRAY(0xfc2b6c)') called at C:/bootperl/perl/lib/File/Path.pm line 100 File::Path::_mkpath('HASH(0xfbdfac)', 'ARRAY(0xfbec3c)') called at C:/bootperl/perl/lib/File/Path.pm line 100 File::Path::_mkpath('HASH(0xfbdfac)', 'ARRAY(0xfbe9bc)') called at C:/bootperl/perl/lib/File/Path.pm line 100 File::Path::_mkpath('HASH(0xfbdfac)', 'ARRAY(0xfbe73c)') called at C:/bootperl/perl/lib/File/Path.pm line 100 File::Path::_mkpath('HASH(0xfbdfac)', 'ARRAY(0xfbe4bc)') called at C:/bootperl/perl/lib/File/Path.pm line 100 File::Path::_mkpath('HASH(0xfbdfac)', 'ARRAY(0xfbe19c)') called at C:/bootperl/perl/lib/File/Path.pm line 100 File::Path::_mkpath('HASH(0xfbdfac)', 'ARRAY(0xfbbd0c)') called at C:/bootperl/perl/lib/File/Path.pm line 82 File::Path::mkpath('C:\Documents and Settings\Curtis\Desktop\PAR-Dist-0.45\t\C:\DOCUME~1\Curtis\LOCALS~1\Temp\parsjhCo\blib') called at C:/bootperl/perl/site/lib/Archive/Zip/Member.pm line 418 Archive::Zip::Member::extractToFileNamed('Archive::Zip::ZipFileMember=HA SH(0xfb42ac)', 'C:\Documents and Settings\Curtis\Desktop\PAR-Dist-0.45\t\C:\DOCUME~1\Curtis\LOCALS~1\Temp\parsjhCo\blib\META.yml') called at C:/bootperl/perl/site/lib/Archive/Zip/Archive.pm line 677 Archive::Zip::Archive::extractTree('Archive::Zip::Archive=HASH(0xfb3f7c) ', '', 'C:\DOCUME~1\Curtis\LOCALS~1\Temp\parsjhCo\blib/') called at C:\Documents and Settings\Curtis\Desktop\PAR-Dist-0.45\blib\lib/PAR/Dist.pm line 939 PAR::Dist::_unzip('dist', 'C:\Documents and Settings\Curtis\Desktop\PAR-Dist-0.45\t\dist1.par', 'path', 'C:\DOCUME~1\Curtis\LOCALS~1\Temp\parsjhCo\blib') called at C:\Documents and Settings\Curtis\Desktop\PAR-Dist-0.45\blib\lib/PAR/Dist.pm line 1101 PAR::Dist::_unzip_to_tmpdir('dist', 'dist1.par', 'subdir', 'blib') called at C:\Documents and Settings\Curtis\Desktop\PAR-Dist-0.45\blib\lib/PAR/Dist.pm line 657 PAR::Dist::merge_par('dist1.par', 'dist2.par') called at t/03merge_meta.t line 103 # Looks like you planned 29 tests but ran 6. # Looks like your test exited with 22 just after 6. What's really weird is that running the test with "perl -Mblib t\03merge_meta.t" succeeds, and installing 1.26 makes "dmake test" succeed.
Subject: (test case committed) ::Archive::extractTree gives ::Member::extractToFileNamed a bad parameter.
A test has been committed that exposes this bug: http://svn.ali.as/cpan/trunk/Archive-Zip/t/12_bug_47223.t @r7660. My suspicion for the cause is the change in Archive::Zip::_asLocalName between 1.26 and 1.28 - but why would it operate differently within the test harness of "dmake test" and outside of it?
This bug was caused to fix extractTree running across a fork. It appears to be an attempt to use Cwd::getcwd instead of Cwd::cwd. I've tried to resolve both situations, but as there was no regression test for the fork thing, I've got no idea if this change regresses the other bug.