mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Fixes to GH-14078: * Rename ZipArchive::openBuffer() to ::openString(). * For consistency with ::open(), return int|bool, don't throw an exception on error. Provide error information via existing properties and accessors. * Fix memory leak when ::openString() is called but ::close() is not called. Add test. * Fix memory leak when a call to ::open() is followed by a call to ::openString(). Add test. * Let libzip own the source, don't call zip_source_keep(). * Share buffer handling with ZipArchive::addFromString(). Elsewhere: * If there is an error from zip_close() during a call to ZipArchive::open(), emit a warning but proceed to open the archive, don't return early. Add test. * When buffers are saved by ZipArchive::addFromString(), release them in ZipArchive::close() and ::open(), don't accumulate buffers until the free_obj handler is called. * Factor out buffer handling and reuse it in ZipArchive::openString() Closes GH-21205. Closes GH-14078. Co-authored-by: Soner Sayakci <s.sayakci@shopware.com> Co-authored-by: Ghaith Olabi <24876890+Gaitholabi@users.noreply.github.com>
29 lines
504 B
PHP
29 lines
504 B
PHP
--TEST--
|
|
ZipArchive::openString() method
|
|
--EXTENSIONS--
|
|
zip
|
|
--FILE--
|
|
<?php
|
|
$zip = new ZipArchive();
|
|
$zip->openString(file_get_contents(__DIR__."/test_procedural.zip"));
|
|
|
|
for ($i = 0; $i < $zip->numFiles; $i++) {
|
|
$stat = $zip->statIndex($i);
|
|
echo $stat['name'] . "\n";
|
|
}
|
|
|
|
// Zip is read-only, not allowed
|
|
var_dump($zip->addFromString("foobar/baz", "baz"));
|
|
var_dump($zip->addEmptyDir("blub"));
|
|
|
|
var_dump($zip->close());
|
|
?>
|
|
--EXPECTF--
|
|
foo
|
|
bar
|
|
foobar/
|
|
foobar/baz
|
|
bool(false)
|
|
bool(false)
|
|
bool(true)
|