[PHP] Fix cleanup code handling issues
Fix to call cleanup code in exception situations and not to invoke the freearg typemap twice in certain situations. Fixes https://sourceforge.net/p/swig/bugs/1211/
This commit is contained in:
parent
dffa74bbe5
commit
1707d6b89b
9 changed files with 54 additions and 16 deletions
23
Examples/test-suite/php/exception_memory_leak_runme.php
Normal file
23
Examples/test-suite/php/exception_memory_leak_runme.php
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
require "tests.php";
|
||||
|
||||
check::functions(array('trigger_internal_swig_exception'));
|
||||
check::classes(array('Foo', 'exception_memory_leak'));
|
||||
// No new vars
|
||||
check::globals(array());
|
||||
|
||||
$a = new Foo();
|
||||
check::equal(Foo::get_count(), 1, "Should have 1 Foo objects");
|
||||
$b = new Foo();
|
||||
check::equal(Foo::get_count(), 2, "Should have 2 Foo objects");
|
||||
|
||||
// Normal behaviour
|
||||
trigger_internal_swig_exception("no problem", $a);
|
||||
check::equal(Foo::get_count(), 2, "Should have 2 Foo objects");
|
||||
check::equal(Foo::get_freearg_count(), 1, "freearg should have been used once");
|
||||
|
||||
// SWIG exception triggered and handled.
|
||||
trigger_internal_swig_exception("null", $b);
|
||||
check::equal(Foo::get_count(), 2, "Should have 2 Foo objects");
|
||||
check::equal(Foo::get_freearg_count(), 2, "freearg should have been used twice");
|
||||
Loading…
Add table
Add a link
Reference in a new issue