From: Dmitry Stogov Date: Mon, 7 Apr 2014 08:14:44 +0000 (+0400) Subject: don't use memset() for array of zval initialization X-Git-Tag: POST_PHPNG_MERGE~412^2~163 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=df7293b07250360f9e9cb113bab54618d1a26881;p=php don't use memset() for array of zval initialization --- diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 3e574e7491..31c2514913 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1614,7 +1614,16 @@ static zend_always_inline zend_execute_data *i_create_execute_data_from_op_array EX(prev_execute_data) = EG(current_execute_data); } - memset(EX_VAR_NUM(0), 0, sizeof(zval) * op_array->last_var); + do { + /* Initialize CV variables */ + zval *var = EX_VAR_NUM(0); + zval *end = var + op_array->last_var; + + while (var != end) { + ZVAL_UNDEF(var); + var++; + } + } while (0); EX(call_slots) = (call_slot*)((char *)execute_data + execute_data_size + vars_size); diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c index bf985b12bc..35b237e132 100644 --- a/Zend/zend_objects.c +++ b/Zend/zend_objects.c @@ -33,8 +33,16 @@ ZEND_API void zend_object_std_init(zend_object *object, zend_class_entry *ce TSR object->ce = ce; object->properties = NULL; object->guards = NULL; - memset(object->properties_table, 0, sizeof(zval) * ce->default_properties_count); zend_objects_store_put(object); + if (EXPECTED(ce->default_properties_count != 0)) { + zval *p = object->properties_table; + zval *end = p + ce->default_properties_count; + + do { + ZVAL_UNDEF(p); + p++; + } while (p != end); + } } ZEND_API void zend_object_std_dtor(zend_object *object TSRMLS_DC)