mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
fp must be nulled on every write also when == phar->fp or we get stale fp and problems. add new test that unearthed this problem
This commit is contained in:
parent
4a59f700f1
commit
d9d91f424b
@ -394,8 +394,8 @@ int phar_tar_writeheaders(void *pDest, void *argument TSRMLS_DC)
|
||||
if (entry->fp && entry->fp_refcount == 0) {
|
||||
if (entry->fp != entry->phar->fp) {
|
||||
php_stream_close(entry->fp);
|
||||
entry->fp = NULL;
|
||||
}
|
||||
entry->fp = NULL;
|
||||
}
|
||||
|
||||
/* note new location within tar */
|
||||
|
51
ext/phar/tests/tar/phar_begin_setstub_commit.phpt
Executable file
51
ext/phar/tests/tar/phar_begin_setstub_commit.phpt
Executable file
@ -0,0 +1,51 @@
|
||||
--TEST--
|
||||
Phar::startBuffering()/setStub()/stopBuffering() tar-based
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("phar")) die("skip"); ?>
|
||||
--INI--
|
||||
phar.readonly=0
|
||||
--FILE--
|
||||
<?php
|
||||
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar.tar', 0, 'brandnewphar.phar');
|
||||
var_dump($p->isTar());
|
||||
//var_dump($p->getStub());
|
||||
var_dump($p->isBuffering());
|
||||
$p->startBuffering();
|
||||
var_dump($p->isBuffering());
|
||||
$p['a.php'] = '<?php var_dump("Hello");';
|
||||
$p->setStub('<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
|
||||
include 'phar://brandnewphar.phar/a.php';
|
||||
var_dump($p->getStub());
|
||||
$p['b.php'] = '<?php var_dump("World");';
|
||||
$p->setStub('<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER();');
|
||||
include 'phar://brandnewphar.phar/b.php';
|
||||
var_dump($p->getStub());
|
||||
$p->stopBuffering();
|
||||
echo "===COMMIT===\n";
|
||||
var_dump($p->isBuffering());
|
||||
include 'phar://brandnewphar.phar/a.php';
|
||||
include 'phar://brandnewphar.phar/b.php';
|
||||
var_dump($p->getStub());
|
||||
?>
|
||||
===DONE===
|
||||
--CLEAN--
|
||||
<?php
|
||||
unlink(dirname(__FILE__) . '/brandnewphar.phar.tar');
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
bool(true)
|
||||
bool(false)
|
||||
string(5) "Hello"
|
||||
string(84) "<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>
|
||||
"
|
||||
string(5) "World"
|
||||
string(85) "<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>
|
||||
"
|
||||
===COMMIT===
|
||||
bool(true)
|
||||
string(5) "Hello"
|
||||
string(5) "World"
|
||||
string(85) "<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>
|
||||
"
|
||||
===DONE===
|
Loading…
Reference in New Issue
Block a user