42a6039125
The change to stop zeroing locals during RetC was too
aggressive---we stopped doing it during unwinding also. When
unwinding, we need to zero locals and $this because another
destructing object may still run debug_backtrace, and we won't have
the *pc == OpRet{C,V} trick to tell us to ignore the junk.
33 linhas
409 B
PHP
33 linhas
409 B
PHP
<?php
|
|
|
|
function blah() {
|
|
throw new Exception('asd');
|
|
}
|
|
|
|
class something {
|
|
public function __destruct() {
|
|
echo "~something\n";
|
|
$k = debug_backtrace()[1]['object'];
|
|
var_dump($k);
|
|
}
|
|
public function yo() {
|
|
blah();
|
|
}
|
|
}
|
|
|
|
class Bar {
|
|
public function foo() {
|
|
$k = new something();
|
|
echo "wat\n";
|
|
blah();
|
|
echo "eh\n";
|
|
}
|
|
}
|
|
|
|
function main() {
|
|
(new Bar)->foo();
|
|
}
|
|
|
|
main();
|
|
|