cellog Sat Sep 13 20:57:15 2008 UTC Modified files: /php-src/ext/phar util.c /php-src/ext/phar/tests bug46060.phpt Log: MFB: fix Bug #46060: addEmptyDir() breaks http://cvs.php.net/viewvc.cgi/php-src/ext/phar/util.c?r1=1.63&r2=1.64&diff_format=u Index: php-src/ext/phar/util.c diff -u php-src/ext/phar/util.c:1.63 php-src/ext/phar/util.c:1.64 --- php-src/ext/phar/util.c:1.63 Thu Sep 11 03:33:10 2008 +++ php-src/ext/phar/util.c Sat Sep 13 20:57:15 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: util.c,v 1.63 2008/09/11 03:33:10 cellog Exp $ */ +/* $Id: util.c,v 1.64 2008/09/13 20:57:15 cellog Exp $ */ #include "phar_internal.h" @@ -785,13 +785,13 @@ if (allow_dir == 2) { etemp.is_dir = 1; etemp.flags = etemp.old_flags = PHAR_ENT_PERM_DEF_DIR; - if (is_dir) { - etemp.filename_len--; /* strip trailing / */ - path_len--; - } } else { etemp.flags = etemp.old_flags = PHAR_ENT_PERM_DEF_FILE; } + if (is_dir) { + etemp.filename_len--; /* strip trailing / */ + path_len--; + } phar_add_virtual_dirs(phar, path, path_len TSRMLS_CC); etemp.is_modified = 1; @@ -803,7 +803,7 @@ if (phar->is_tar) { etemp.is_tar = phar->is_tar; - etemp.tar_type = TAR_FILE; + etemp.tar_type = etemp.is_dir ? TAR_DIR : TAR_FILE; } if (FAILURE == zend_hash_add(&phar->manifest, etemp.filename, path_len, (void*)&etemp, sizeof(phar_entry_info), (void **) &entry)) { http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/bug46060.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/phar/tests/bug46060.phpt diff -u /dev/null php-src/ext/phar/tests/bug46060.phpt:1.2 --- /dev/null Sat Sep 13 20:57:15 2008 +++ php-src/ext/phar/tests/bug46060.phpt Sat Sep 13 20:57:15 2008 @@ -0,0 +1,30 @@ +--TEST-- +Phar: Bug #46060: addEmptyDir() breaks +--SKIPIF-- +<?php if (!extension_loaded("phar")) die("skip"); ?> +<?php if (getenv('SKIP_SLOW_TESTS')) die('skip'); ?> +--FILE-- +<?php +$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.tar'; +$fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.2.tar'; + +$phar = new PharData($fname); +$phar->addEmptyDir('blah/'); +$phar->addFromString('test/', ''); + +copy($fname, $fname2); +$phar = new PharData($fname2); + +var_dump($phar['blah']->isDir(), $phar['test']->isDir()); +?> +===DONE=== +--CLEAN-- +<?php +unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.tar'); +unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.tar'); +__HALT_COMPILER(); +?> +--EXPECT-- +bool(true) +bool(false) +===DONE===
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php