mirror of
https://github.com/php/php-src.git
synced 2026-04-19 22:11:12 +02:00
Releasing the `com_dotnet_istream_wrapper` in `istream_destructor()` is pointless, since `istream_destructor()` is only called when the resource is going to be released. This recursion is not a real issue, though, since the resource is never exposed to userland, and has at most refcount 1, so due to well defined unsigned integer underflow, it never is released twice. However, returning early in this case causes a memory leak which needs to be fixed.
19 lines
436 B
PHP
19 lines
436 B
PHP
--TEST--
|
|
Bug #79332 (php_istreams are never freed)
|
|
--SKIPIF--
|
|
<?php
|
|
if (!extension_loaded('com_dotnet')) die('com_dotnet extension not available');
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
$ph = new COMPersistHelper(null);
|
|
try {
|
|
$ph->LoadFromStream(fopen(__FILE__, 'r'));
|
|
} catch (com_exception $ex) {
|
|
// use hard-coded message to avoid localization issues
|
|
echo "A com_exception has been thrown\n";
|
|
}
|
|
?>
|
|
--EXPECT--
|
|
A com_exception has been thrown
|