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);