Changeset 722


Ignore:
Timestamp:
2011-04-09T13:41:07+02:00 (3 years ago)
Author:
moo
Message:

method call decompile fix

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Decompiler.class.php

    r720 r722  
    801801                        case ZEND_FETCH_CLASS_PARENT: 
    802802                            $class = 'parent'; 
    803                         } 
     803                            break; 
     804                        case ZEND_FETCH_CLASS_STATIC: 
     805                            $class = 'static'; 
     806                            break; 
     807                        } 
     808                        $istmpres = true; 
    804809                    } 
    805810                    else { 
     
    10631068                    } 
    10641069                    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) { 
     1070                    if ($opc == XC_INIT_STATIC_METHOD_CALL || $opc == XC_INIT_METHOD_CALL || $op1['op_type'] != XC_IS_UNUSED) { 
    10701071                        $obj = $this->getOpVal($op1, $EX); 
    10711072                        if (!isset($obj)) { 
    10721073                            $obj = '$this'; 
    10731074                        } 
    1074                         // looks like PHP4 only 
    1075                         if (isset($op1['constant'])) { 
     1075                        if ($opc == XC_INIT_STATIC_METHOD_CALL || /* PHP4 */ isset($op1['constant'])) { 
    10761076                            $EX['object'] = null; 
    10771077                            $EX['called_scope'] = $this->unquoteName($obj); 
     
    18651865define('ZEND_FETCH_CLASS_AUTO',       5); 
    18661866define('ZEND_FETCH_CLASS_INTERFACE',  6); 
     1867define('ZEND_FETCH_CLASS_STATIC',     7); 
    18671868 
    18681869define('ZEND_EVAL',               (1<<0)); 
  • trunk/opcode_spec_def.h

    r718 r722  
    172172 
    173173    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 112 INIT_METHOD_CALL               */ 
     174#   ifdef ZEND_ENGINE_2_3 
     175    OPSPEC(    UNUSED,        STD,        STD,     UNUSED) /* 113 INIT_STATIC_METHOD_CALL        */ 
     176#   else 
    174177    OPSPEC(    UNUSED,     UCLASS,        STD,     UNUSED) /* 113 INIT_STATIC_METHOD_CALL        */ 
     178#   endif 
    175179    OPSPEC(     ISSET,        STD,      FETCH,        TMP) /* 114 ISSET_ISEMPTY_VAR              */ 
    176180    OPSPEC(     ISSET,        STD,        STD,        TMP) /* 115 ISSET_ISEMPTY_DIM_OBJ          */ 
Note: See TracChangeset for help on using the changeset viewer.