diff options
Diffstat (limited to 'Zend/zend_execute.c')
| -rw-r--r-- | Zend/zend_execute.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 8dfa0065d..c7aac2f1a 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_execute.c,v 1.716.2.10 2006/01/04 23:53:04 andi Exp $ */ +/* $Id: zend_execute.c,v 1.716.2.12 2006/02/26 10:53:38 helly Exp $ */ #define ZEND_INTENSIVE_DEBUGGING 0 @@ -177,8 +177,8 @@ static inline zval *_get_zval_ptr_var(znode *node, temp_variable *Ts, zend_free_ should_free->var = ptr; if (T->str_offset.str->type != IS_STRING - || ((int)T->str_offset.offset<0) - || (T->str_offset.str->value.str.len <= T->str_offset.offset)) { + || ((int)T->str_offset.offset < 0) + || (T->str_offset.str->value.str.len <= (int)T->str_offset.offset)) { zend_error(E_NOTICE, "Uninitialized string offset: %d", T->str_offset.offset); ptr->value.str.val = STR_EMPTY_ALLOC(); ptr->value.str.len = 0; @@ -545,6 +545,16 @@ static inline void zend_assign_to_object(znode *result, zval **object_ptr, znode zval *value = get_zval_ptr(value_op, Ts, &free_value, BP_VAR_R); zval **retval = &T(result->u.var).var.ptr; + if (*object_ptr == EG(error_zval_ptr)) { + FREE_OP(free_op2); + if (!RETURN_VALUE_UNUSED(result)) { + *retval = EG(uninitialized_zval_ptr); + PZVAL_LOCK(*retval); + } + FREE_OP(free_value); + return; + } + make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */ object = *object_ptr; @@ -648,7 +658,7 @@ static inline void zend_assign_to_variable(znode *result, znode *op1, znode *op2 zend_error(E_WARNING, "Illegal string offset: %d", T->str_offset.offset); break; } - if (T->str_offset.offset >= T->str_offset.str->value.str.len) { + if ((int)T->str_offset.offset >= T->str_offset.str->value.str.len) { zend_uint i; if (T->str_offset.str->value.str.len==0) { |
