Changeset 720 for trunk/Decompiler.class.php
- Timestamp:
- 2011-04-09T13:02:07+02:00 (2 years ago)
- File:
-
- 1 edited
-
trunk/Decompiler.class.php (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Decompiler.class.php
r717 r720 573 573 // func call 574 574 $EX['object'] = null; 575 $EX['called_scope'] = null; 575 576 $EX['fbc'] = null; 576 577 $EX['argstack'] = array(); … … 783 784 switch ($opc) { 784 785 case XC_NEW: // {{{ 785 array_push($EX['arg_types_stack'], array($EX[' object'], $EX['fbc']));786 array_push($EX['arg_types_stack'], array($EX['fbc'], $EX['object'], $EX['called_scope'])); 786 787 $EX['object'] = (int) $res['var']; 788 $EX['called_scope'] = null; 787 789 $EX['fbc'] = 'new ' . $this->unquoteName($this->getOpVal($op1, $EX)); 788 790 if (PHP_VERSION < 5) { … … 1053 1055 break; 1054 1056 // }}} 1057 case XC_INIT_STATIC_METHOD_CALL: 1055 1058 case XC_INIT_METHOD_CALL: 1056 1059 case XC_INIT_FCALL_BY_FUNC: … … 1059 1062 break; 1060 1063 } 1061 array_push($EX['arg_types_stack'], array($EX['object'], $EX['fbc'])); 1062 if ($opc == XC_INIT_METHOD_CALL || $op1['op_type'] != XC_IS_UNUSED) { 1064 array_push($EX['arg_types_stack'], array($EX['fbc'], $EX['object'], $EX['called_scope'])); 1065 if ($opc == XC_INIT_STATIC_METHOD_CALL) { 1066 $EX['object'] = null; 1067 $EX['called_scope'] = $op1['var']; 1068 } 1069 else if ($opc == XC_INIT_METHOD_CALL || $op1['op_type'] != XC_IS_UNUSED) { 1063 1070 $obj = $this->getOpVal($op1, $EX); 1064 1071 if (!isset($obj)) { 1065 1072 $obj = '$this'; 1066 1073 } 1067 $EX['object'] = $obj; 1074 // looks like PHP4 only 1075 if (isset($op1['constant'])) { 1076 $EX['object'] = null; 1077 $EX['called_scope'] = $this->unquoteName($obj); 1078 } 1079 else { 1080 $EX['object'] = $obj; 1081 $EX['called_scope'] = null; 1082 } 1068 1083 if ($res['op_type'] != XC_IS_UNUSED) { 1069 1084 $resvar = '$obj call$'; … … 1072 1087 else { 1073 1088 $EX['object'] = null; 1089 $EX['called_scope'] = null; 1074 1090 } 1075 1091 … … 1106 1122 $resvar = 1107 1123 (isset($object) ? $object . '->' : '' ) 1124 . (isset($EX['called_scope']) ? $EX['called_scope'] . '::' : '' ) 1108 1125 . $fname . "($args)"; 1109 1126 unset($args); … … 1113 1130 $resvar = null; 1114 1131 } 1115 list($EX[' object'], $EX['fbc']) = array_pop($EX['arg_types_stack']);1132 list($EX['fbc'], $EX['object'], $EX['called_scope']) = array_pop($EX['arg_types_stack']); 1116 1133 break; 1117 1134 // }}} … … 1913 1930 'XC_ISSET_ISEMPTY_PROP_OBJ' => -1, 1914 1931 'XC_ISSET_ISEMPTY_VAR' => -1, 1932 'XC_INIT_STATIC_METHOD_CALL' => -1, 1915 1933 'XC_INIT_METHOD_CALL' => -1, 1916 1934 'XC_VERIFY_ABSTRACT_CLASS' => -1,
Note: See TracChangeset
for help on using the changeset viewer.

