|
|
| version 1.1.1.1, 2012/02/21 23:47:52 | version 1.1.1.2, 2012/05/29 12:34:36 |
|---|---|
| Line 34 ZEND_API void _zval_dtor_func(zval *zvalue ZEND_FILE_L | Line 34 ZEND_API void _zval_dtor_func(zval *zvalue ZEND_FILE_L |
| case IS_CONSTANT: | case IS_CONSTANT: |
| CHECK_ZVAL_STRING_REL(zvalue); | CHECK_ZVAL_STRING_REL(zvalue); |
| STR_FREE_REL(zvalue->value.str.val); | STR_FREE_REL(zvalue->value.str.val); |
| #if SUHOSIN_PATCH | |
| zvalue->value.str.len = 0; | |
| #endif | |
| break; | break; |
| case IS_ARRAY: | case IS_ARRAY: |
| case IS_CONSTANT_ARRAY: { | case IS_CONSTANT_ARRAY: { |
| Line 80 ZEND_API void _zval_internal_dtor(zval *zvalue ZEND_FI | Line 77 ZEND_API void _zval_internal_dtor(zval *zvalue ZEND_FI |
| case IS_STRING: | case IS_STRING: |
| case IS_CONSTANT: | case IS_CONSTANT: |
| CHECK_ZVAL_STRING_REL(zvalue); | CHECK_ZVAL_STRING_REL(zvalue); |
| free(zvalue->value.str.val); | str_free(zvalue->value.str.val); |
| #if SUHOSIN_PATCH | |
| zvalue->value.str.len = 0; | |
| #endif | |
| break; | break; |
| case IS_ARRAY: | case IS_ARRAY: |
| case IS_CONSTANT_ARRAY: | case IS_CONSTANT_ARRAY: |
| Line 123 ZEND_API void _zval_copy_ctor_func(zval *zvalue ZEND_F | Line 117 ZEND_API void _zval_copy_ctor_func(zval *zvalue ZEND_F |
| case IS_CONSTANT: | case IS_CONSTANT: |
| case IS_STRING: | case IS_STRING: |
| CHECK_ZVAL_STRING_REL(zvalue); | CHECK_ZVAL_STRING_REL(zvalue); |
| zvalue->value.str.val = (char *) estrndup_rel(zvalue->value.str.val, zvalue->value.str.len); | if (!IS_INTERNED(zvalue->value.str.val)) { |
| zvalue->value.str.val = (char *) estrndup_rel(zvalue->value.str.val, zvalue->value.str.len); | |
| } | |
| break; | break; |
| case IS_ARRAY: | case IS_ARRAY: |
| case IS_CONSTANT_ARRAY: { | case IS_CONSTANT_ARRAY: { |
| Line 165 ZEND_API void _zval_dtor_wrapper(zval *zvalue) | Line 161 ZEND_API void _zval_dtor_wrapper(zval *zvalue) |
| zval_dtor(zvalue); | zval_dtor(zvalue); |
| } | } |
| ZEND_API void zval_property_ctor(zval **p) /* {{{ */ | |
| { | |
| zval *orig_ptr = *p; | |
| ALLOC_ZVAL(*p); | |
| **p = *orig_ptr; | |
| zval_copy_ctor(*p); | |
| Z_SET_REFCOUNT_PP(p, 1); | |
| Z_UNSET_ISREF_PP(p); | |
| } | |
| /* }}} */ | |
| #if ZEND_DEBUG | #if ZEND_DEBUG |
| ZEND_API void _zval_copy_ctor_wrapper(zval *zvalue) | ZEND_API void _zval_copy_ctor_wrapper(zval *zvalue) |
| { | { |
| Line 201 ZEND_API void _zval_internal_ptr_dtor_wrapper(zval **z | Line 186 ZEND_API void _zval_internal_ptr_dtor_wrapper(zval **z |
| zval_internal_ptr_dtor(zval_ptr); | zval_internal_ptr_dtor(zval_ptr); |
| } | } |
| #endif | #endif |
| ZEND_API int zval_copy_static_var(zval **p TSRMLS_DC, int num_args, va_list args, zend_hash_key *key) /* {{{ */ | |
| { | |
| HashTable *target = va_arg(args, HashTable*); | |
| zend_bool is_ref; | |
| zval *tmp; | |
| if (Z_TYPE_PP(p) & (IS_LEXICAL_VAR|IS_LEXICAL_REF)) { | |
| is_ref = Z_TYPE_PP(p) & IS_LEXICAL_REF; | |
| if (!EG(active_symbol_table)) { | |
| zend_rebuild_symbol_table(TSRMLS_C); | |
| } | |
| if (zend_hash_quick_find(EG(active_symbol_table), key->arKey, key->nKeyLength, key->h, (void **) &p) == FAILURE) { | |
| if (is_ref) { | |
| ALLOC_INIT_ZVAL(tmp); | |
| Z_SET_ISREF_P(tmp); | |
| zend_hash_quick_add(EG(active_symbol_table), key->arKey, key->nKeyLength, key->h, &tmp, sizeof(zval*), (void**)&p); | |
| } else { | |
| tmp = EG(uninitialized_zval_ptr); | |
| zend_error(E_NOTICE,"Undefined variable: %s", key->arKey); | |
| } | |
| } else { | |
| if (is_ref) { | |
| SEPARATE_ZVAL_TO_MAKE_IS_REF(p); | |
| tmp = *p; | |
| } else if (Z_ISREF_PP(p)) { | |
| ALLOC_INIT_ZVAL(tmp); | |
| ZVAL_COPY_VALUE(tmp, *p); | |
| zval_copy_ctor(tmp); | |
| Z_SET_REFCOUNT_P(tmp, 0); | |
| Z_UNSET_ISREF_P(tmp); | |
| } else { | |
| tmp = *p; | |
| } | |
| } | |
| } else { | |
| tmp = *p; | |
| } | |
| if (zend_hash_quick_add(target, key->arKey, key->nKeyLength, key->h, &tmp, sizeof(zval*), NULL) == SUCCESS) { | |
| Z_ADDREF_P(tmp); | |
| } | |
| return ZEND_HASH_APPLY_KEEP; | |
| } | |
| /* }}} */ | |
| /* | /* |
| * Local variables: | * Local variables: |