Ignore:
Timestamp:
2011-04-18T06:29:25+02:00 (4 years ago)
Author:
moo
Message:

merge changes from trunk

Location:
branches/1.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/1.3

  • branches/1.3/disassembler.c

    r726 r766  
    3737    add_assoc_zval_ex(dst, ZEND_STRS("op_array"), zv);
    3838
     39    buf = emalloc(bufsize);
     40
    3941    ALLOC_INIT_ZVAL(list);
    4042    array_init(list);
    4143    b = TG(internal_function_tail) ? TG(internal_function_tail)->pListNext : TG(function_table).pListHead;
    4244    for (; b; b = b->pListNext) {
     45        int keysize, keyLength;
     46
    4347        ALLOC_INIT_ZVAL(zv);
    4448        array_init(zv);
    4549        xc_dasm_zend_function(zv, b->pData TSRMLS_CC);
    46 
    47         add_u_assoc_zval_ex(list, BUCKET_KEY_TYPE(b), ZSTR(BUCKET_KEY_S(b)), b->nKeyLength, zv);
    48     }
    49     add_assoc_zval_ex(dst, ZEND_STRS("function_table"), list);
    50    
    51     buf = emalloc(bufsize);
    52     ALLOC_INIT_ZVAL(list);
    53     array_init(list);
    54     b = TG(internal_class_tail) ? TG(internal_class_tail)->pListNext : TG(class_table).pListHead;
    55     for (; b; b = b->pListNext) {
    56         int keysize, keyLength;
    57 
    58         ALLOC_INIT_ZVAL(zv);
    59         array_init(zv);
    60         xc_dasm_zend_class_entry(zv, CestToCePtr(*(xc_cest_t *)b->pData) TSRMLS_CC);
    6150
    6251        keysize = BUCKET_KEY_SIZE(b) + 2;
     
    8271            }
    8372        }
     73
     74        add_u_assoc_zval_ex(list, BUCKET_KEY_TYPE(b), ZSTR(buf), keyLength, zv);
     75    }
     76    add_assoc_zval_ex(dst, ZEND_STRS("function_table"), list);
     77   
     78    ALLOC_INIT_ZVAL(list);
     79    array_init(list);
     80    b = TG(internal_class_tail) ? TG(internal_class_tail)->pListNext : TG(class_table).pListHead;
     81    for (; b; b = b->pListNext) {
     82        int keysize, keyLength;
     83
     84        ALLOC_INIT_ZVAL(zv);
     85        array_init(zv);
     86        xc_dasm_zend_class_entry(zv, CestToCePtr(*(xc_cest_t *)b->pData) TSRMLS_CC);
     87
     88        keysize = BUCKET_KEY_SIZE(b) + 2;
     89        if (keysize > bufsize) {
     90            do {
     91                bufsize *= 2;
     92            } while (keysize > bufsize);
     93            buf = erealloc(buf, bufsize);
     94        }
     95        memcpy(buf, BUCKET_KEY_S(b), keysize);
     96        buf[keysize - 2] = buf[keysize - 1] = ""[0];
     97        keyLength = b->nKeyLength;
     98#ifdef IS_UNICODE
     99        if (BUCKET_KEY_TYPE(b) == IS_UNICODE) {
     100            if (buf[0] == ""[0] && buf[1] == ""[0]) {
     101                keyLength ++;
     102            }
     103        } else
     104#endif
     105        {
     106            if (buf[0] == ""[0]) {
     107                keyLength ++;
     108            }
     109        }
    84110        add_u_assoc_zval_ex(list, BUCKET_KEY_TYPE(b), ZSTR(buf), keyLength, zv);
    85111    }
Note: See TracChangeset for help on using the changeset viewer.