version 1.1, 2012/02/21 23:47:52
|
version 1.1.1.3, 2013/07/22 01:32:16
|
Line 2
|
Line 2
|
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| Zend Engine | |
| Zend Engine | |
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| Copyright (c) 1998-2012 Zend Technologies Ltd. (http://www.zend.com) | | | Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) | |
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| This source file is subject to version 2.00 of the Zend license, | |
| This source file is subject to version 2.00 of the Zend license, | |
| that is bundled with this package in the file LICENSE, and is | |
| that is bundled with this package in the file LICENSE, and is | |
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: { |
TSRMLS_FETCH(); |
TSRMLS_FETCH(); |
|
|
if (zvalue->value.ht && (zvalue->value.ht != &EG(symbol_table))) { |
if (zvalue->value.ht && (zvalue->value.ht != &EG(symbol_table))) { |
|
/* break possible cycles */ |
|
Z_TYPE_P(zvalue) = IS_NULL; |
zend_hash_destroy(zvalue->value.ht); |
zend_hash_destroy(zvalue->value.ht); |
FREE_HASHTABLE(zvalue->value.ht); |
FREE_HASHTABLE(zvalue->value.ht); |
} |
} |
Line 80 ZEND_API void _zval_internal_dtor(zval *zvalue ZEND_FI
|
Line 79 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 119 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 163 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 188 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: |