cvs: ZendEngine2(PHP_5_3) / zend_execute_API.c

[email protected] ("Dmitry Stogov")
Newsgroups php.zend-engine.cvs
Message-ID <cvsdmitry1219739907@cvsserver>
dmitry		Tue Aug 26 08:38:27 2008 UTC

  Modified files:              (Branch: PHP_5_3)
    /ZendEngine2	zend_execute_API.c 
  Log:
  Fixed bug #45910 (Cannot declare self-referencing constant)
  
  
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute_API.c?r1=1.331.2.20.2.24.2.55&r2=1.331.2.20.2.24.2.56&diff_format=u
Index: ZendEngine2/zend_execute_API.c
diff -u ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.55 ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.56
--- ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.55	Thu Aug 14 10:24:51 2008
+++ ZendEngine2/zend_execute_API.c	Tue Aug 26 08:38:26 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_execute_API.c,v 1.331.2.20.2.24.2.55 2008/08/14 10:24:51 helly Exp $ */
+/* $Id: zend_execute_API.c,v 1.331.2.20.2.24.2.56 2008/08/26 08:38:26 dmitry Exp $ */
 
 #include <stdio.h>
 #include <signal.h>
@@ -541,6 +541,7 @@
 		char *str_index;
 		uint str_index_len;
 		ulong num_index;
+		int ret;
 
 		SEPARATE_ZVAL_IF_NOT_REF(pp);
 		p = *pp;
@@ -601,20 +602,25 @@
 
 			switch (Z_TYPE(const_value)) {
 				case IS_STRING:
-					zend_symtable_update_current_key(Z_ARRVAL_P(p), Z_STRVAL(const_value), Z_STRLEN(const_value) + 1, HASH_UPDATE_KEY_IF_BEFORE);
+					ret = zend_symtable_update_current_key(Z_ARRVAL_P(p), Z_STRVAL(const_value), Z_STRLEN(const_value) + 1, HASH_UPDATE_KEY_IF_BEFORE);
 					break;
 				case IS_BOOL:
 				case IS_LONG:
-					zend_hash_update_current_key_ex(Z_ARRVAL_P(p), HASH_KEY_IS_LONG, NULL, 0, Z_LVAL(const_value), HASH_UPDATE_KEY_IF_BEFORE, NULL);
+					ret = zend_hash_update_current_key_ex(Z_ARRVAL_P(p), HASH_KEY_IS_LONG, NULL, 0, Z_LVAL(const_value), HASH_UPDATE_KEY_IF_BEFORE, NULL);
 					break;
 				case IS_DOUBLE:
-					zend_hash_update_current_key_ex(Z_ARRVAL_P(p), HASH_KEY_IS_LONG, NULL, 0, (long)Z_DVAL(const_value), HASH_UPDATE_KEY_IF_BEFORE, NULL);
+					ret = zend_hash_update_current_key_ex(Z_ARRVAL_P(p), HASH_KEY_IS_LONG, NULL, 0, (long)Z_DVAL(const_value), HASH_UPDATE_KEY_IF_BEFORE, NULL);
 					break;
 				case IS_NULL:
-					zend_hash_update_current_key_ex(Z_ARRVAL_P(p), HASH_KEY_IS_STRING, "", 1, 0, HASH_UPDATE_KEY_IF_BEFORE, NULL);
+					ret = zend_hash_update_current_key_ex(Z_ARRVAL_P(p), HASH_KEY_IS_STRING, "", 1, 0, HASH_UPDATE_KEY_IF_BEFORE, NULL);
 					break;
+				default:
+					ret = SUCCESS;
+					break;
+			}
+			if (ret == SUCCESS) {
+				zend_hash_move_forward(Z_ARRVAL_P(p));
 			}
-			zend_hash_move_forward(Z_ARRVAL_P(p));
 			zval_dtor(&const_value);
 		}
 		zend_hash_apply_with_argument(Z_ARRVAL_P(p), (apply_func_arg_t) zval_update_constant, (void *) 1 TSRMLS_CC);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.