From e2935702b49f99136ba9abc2c7aff87843e9ffe7 Mon Sep 17 00:00:00 2001 From: Xuefer Date: Thu, 14 Apr 2011 02:14:32 +0000 Subject: [PATCH] decompiler: process ZEND_CASE opcode, switch/case is not recognized as it used to be however git-svn-id: svn://svn.lighttpd.net/xcache/trunk@743 c26eb9a1-5813-0410-bd6c-c2e55f420ca7 --- Decompiler.class.php | 5 +++++ decompilesample.php | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/Decompiler.class.php b/Decompiler.class.php index e705bc5..6fc0e16 100644 --- a/Decompiler.class.php +++ b/Decompiler.class.php @@ -88,6 +88,7 @@ class Decompiler_Code extends Decompiler_Object // {{{ function Decompiler_Code($src) { + assert('isset($src)'); $this->src = $src; } @@ -1403,6 +1404,10 @@ class Decompiler break; // }}} case XC_CASE: + $switchValue = $this->getOpVal($op1, $EX); + $caseValue = $this->getOpVal($op2, $EX); + $resvar = $switchValue . ' == ' . $caseValue; + break; case XC_BRK: break; case XC_RECV_INIT: diff --git a/decompilesample.php b/decompilesample.php index 8ca86f4..fde825b 100644 --- a/decompilesample.php +++ b/decompilesample.php @@ -66,4 +66,18 @@ class ClassName echo str_replace(array('a' => 'a', 'b' => 'c'), 'b'); +switch ($switch) { +case 'case1': + echo 'case1'; + break; + +case 'case2': + echo 'case2'; + break; + +default: + echo 'default'; + break; +} + ?>