Diff for /embedaddon/php/Zend/zend_variables.c between versions 1.1.1.1 and 1.1.1.2

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:

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>