Changeset 378 in svn for branches/1.2/xcache.c


Ignore:
Timestamp:
2007-05-07T17:21:35Z (8 years ago)
Author:
Xuefer
Message:

merged[344] [345] [346] from trunk->1.2: fixed #59: pass by reference for internal function was broken

Location:
branches/1.2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/1.2

  • branches/1.2/xcache.c

    r377 r378  
    10231023        Bucket *b;
    10241024        unsigned int i;
     1025        unsigned int j;
    10251026
    10261027#define COPY_H(vartype, var, cnt, name, datatype) do {        \
    1027     for (i = 0; b; i ++, b = b->pListNext) {                  \
    1028         vartype *data = &php.var[i];                          \
     1028    for (i = 0, j = 0; b; i ++, b = b->pListNext) {           \
     1029        vartype *data = &php->var[j];                         \
    10291030                                                              \
    10301031        if (i < old_##cnt) {                                  \
    10311032            continue;                                         \
    10321033        }                                                     \
     1034        j ++;                                                 \
    10331035                                                              \
    10341036        assert(i < old_##cnt + php.cnt);                      \
     
    14431445    int i;
    14441446
     1447    if (XG(internal_function_table).nTableSize == 0) {
     1448        zend_function tmp_func;
     1449        xc_cest_t tmp_cest;
     1450
     1451        zend_hash_init_ex(&XG(internal_function_table), 100, NULL, NULL, 1, 0);
     1452        zend_hash_copy(&XG(internal_function_table), CG(function_table), (copy_ctor_func_t) function_add_ref, &tmp_func, sizeof(tmp_func));
     1453
     1454        zend_hash_init_ex(&XG(internal_class_table), 10, NULL, NULL, 1, 0);
     1455        zend_hash_copy(&XG(internal_class_table), CG(class_table), (copy_ctor_func_t) xc_zend_class_add_ref, &tmp_cest, sizeof(tmp_cest));
     1456    }
    14451457    if (xc_php_hcache.size && !XG(php_holds)) {
    14461458        XG(php_holds) = calloc(xc_php_hcache.size, sizeof(xc_stack_t));
     
    15161528        xcache_globals->var_holds = NULL;
    15171529    }
     1530
     1531    zend_hash_destroy(&xcache_globals->internal_function_table);
     1532    zend_hash_destroy(&xcache_globals->internal_class_table);
    15181533}
    15191534/* }}} */
Note: See TracChangeset for help on using the changeset viewer.