Changeset 713 in svn


Ignore:
Timestamp:
2011-04-08T20:27:55+02:00 (4 years ago)
Author:
Xuefer
Message:

disassembler: refix previous partial

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Decompiler.class.php

    r522 r713  
    2929    if (is_array($src)) {
    3030        die_error('array str');
    31         $src = new Decompiler_Array($src, false, $indent);
     31        $src = new Decompiler_Array($src, $indent);
    3232        return $src->__toString();
    3333    }
     
    3838            die_error('no __toString');
    3939        }
    40         return $src->__toString($indent);
     40        return $src->__toString();
    4141    }
    4242
     
    5656
    5757    if (is_array($value)) {
    58         $value = new Decompiler_Array($value, true);
     58        $value = new Decompiler_Array($value);
    5959    }
    6060    else {
    61         $value = new Decompiler_Value($value, true);
     61        $value = new Decompiler_Value($value);
    6262    }
    6363    return $value;
     
    257257class Decompiler_Array extends Decompiler_Value // {{{
    258258{
    259     var $needExport = false;
    260259    var $indent = '';
    261260
    262     function Decompiler_Array($value = array(), $needexport = false, $indent = '')
     261    function Decompiler_Array($value = array(), $indent = '')
    263262    {
    264263        $this->value = $value;
    265         $this->needExport = $needexport;
    266264        $this->indent = $indent;
    267265    }
     
    286284            ++ $i;
    287285        }
    288         if ($assoclen && $this->needExport) {
     286        if ($assoclen) {
    289287            $assoclen += 2;
    290288        }
     
    306304            }
    307305
    308             if ($this->needExport) {
    309                 $k = var_export($k, true);
    310             }
     306            $k = var_export($k, true);
    311307            if ($multiline) {
    312308                $exp .= sprintf("%{$assoclen}s => ", $k);
     
    316312            }
    317313
    318             if (is_array($v)) {
    319                 $v = new Decompiler_Array($v, $this->needExport);
    320             }
    321             $exp .= str($v, $subindent);
     314            $exp .= str(value($v), $subindent);
    322315
    323316            $i ++;
     
    16081601        if (!empty($class['default_properties'])) {
    16091602            echo "\n";
    1610             $infos = empty($class['properties_info']) ? null : $class['properties_info'];
    1611             foreach ($class['default_properties'] as $name => $v) {
     1603            $infos = !empty($class['properties_info']) ? $class['properties_info'] : null;
     1604            foreach (!empty($class['properties_info']) ? $class['properties_info'] : ($class['default_static_members'] + $class['default_properties']) as $name => $dummy) {
    16121605                $info = (isset($infos) && isset($infos[$name])) ? $infos[$name] : null;
    16131606                if (isset($info)) {
     
    16201613
    16211614                echo $newindent;
     1615                $static = false;
     1616                if (isset($info)) {
     1617                    if ($info['flags'] & ZEND_ACC_STATIC) {
     1618                        $static = true;
     1619                    }
     1620                }
     1621                else if (isset($class['default_static_members'][$name])) {
     1622                    $static = true;
     1623                }
     1624
     1625                if ($static) {
     1626                    echo "static ";
     1627                }
     1628
     1629                $mangled = false;
    16221630                if (PHP_VERSION < 5) {
    16231631                    echo 'var ';
     
    16361644                    case ZEND_ACC_PRIVATE:
    16371645                        echo "private ";
     1646                        $mangled = true;
    16381647                        break;
    16391648                    case ZEND_ACC_PROTECTED:
    16401649                        echo "protected ";
     1650                        $mangled = true;
    16411651                        break;
    16421652                    }
    1643                     if ($info['flags'] & ZEND_ACC_STATIC) {
    1644                         echo "static ";
    1645                     }
    16461653                }
    16471654
    16481655                echo '$', $name;
    1649                 if (isset($v)) {
     1656
     1657                $key = isset($info) ? $info['name'] . ($mangled ? "\000" : "") : $name;
     1658
     1659                $value = $class[$static ? 'default_static_members' : 'default_properties'][$key];
     1660                if (isset($value)) {
    16501661                    echo ' = ';
    1651                     echo str(value($v));
     1662                    echo str(value($value));
    16521663                }
    16531664                echo ";\n";
  • trunk/processor/processor.m4

    r710 r713  
    7575        zval_copy_ctor(dst);
    7676        Z_SET_REFCOUNT(*dst, 1);
    77         switch ((Z_TYPE_P(src) & IS_CONSTANT_TYPE_MASK)) {
    78         case IS_CONSTANT:
    79             dst->type = UNISW(IS_STRING, UG(unicode) ? IS_UNICODE : IS_STRING);
    80             break;
    81         case IS_CONSTANT_ARRAY:
    82             dst->type = IS_ARRAY;
    83             break;
    84         }
    8577        DONE(value)
    8678        DONE(type)
  • trunk/xcache.c

    r702 r713  
    30133013    }
    30143014
    3015     if (value->type == IS_CONSTANT) {
     3015    switch ((Z_TYPE_P(value) & IS_CONSTANT_TYPE_MASK)) {
     3016    case IS_CONSTANT:
    30163017        *return_value = *value;
    30173018        zval_copy_ctor(return_value);
    30183019        return_value->type = UNISW(IS_STRING, UG(unicode) ? IS_UNICODE : IS_STRING);
    3019         return;
    3020     }
    3021 
    3022     if (value->type == IS_CONSTANT_ARRAY) {
     3020        break;
     3021
     3022    case IS_CONSTANT_ARRAY:
    30233023        *return_value = *value;
    30243024        zval_copy_ctor(return_value);
    30253025        return_value->type = IS_ARRAY;
    3026         return;
    3027     }
    3028 
    3029     RETURN_NULL();
     3026        break;
     3027
     3028    default:
     3029        RETURN_NULL();
     3030    }
    30303031}
    30313032/* }}} */
Note: See TracChangeset for help on using the changeset viewer.