summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--devel/sample.cpp.php2
-rw-r--r--lib/Decompiler.class.php10
2 files changed, 10 insertions, 2 deletions
diff --git a/devel/sample.cpp.php b/devel/sample.cpp.php
index 3d16ad9..03de993 100644
--- a/devel/sample.cpp.php
+++ b/devel/sample.cpp.php
@@ -702,5 +702,7 @@ $callback = function($quantity, $product) use($tax, &$total) {
#endif
exit();
exit(1);
+array(eval('array 1'));
+array();
?>
diff --git a/lib/Decompiler.class.php b/lib/Decompiler.class.php
index 82010ad..419ad86 100644
--- a/lib/Decompiler.class.php
+++ b/lib/Decompiler.class.php
@@ -2190,7 +2190,13 @@ class Decompiler
case XC_INCLUDE_OR_EVAL: // {{{
$type = ZEND_ENGINE_2_4 ? $ext : $op2['var']; // hack
$keyword = $this->includeTypes[$type];
- $resvar = "$keyword " . str($this->getOpVal($op1, $EX));
+ $rvalue = str($this->getOpVal($op1, $EX));
+ if ($type == ZEND_EVAL) {
+ $resvar = "$keyword($rvalue)";
+ }
+ else {
+ $resvar = "$keyword $rvalue";
+ }
break;
// }}}
case XC_FE_RESET: // {{{
@@ -2233,7 +2239,7 @@ class Decompiler
// }}}
case XC_FREE: // {{{
$free = $T[$op1['var']];
- if (!is_a($free, 'Decompiler_Array') && !is_a($free, 'Decompiler_Box')) {
+ if (!is_a($free, 'Decompiler_Box')) {
$op['php'] = is_object($free) ? $free : $this->unquote($free, '(', ')');
$lastphpop = &$op;
}