com php-src: don't use memset() for array of zval initialization: Zend/zend_execute.c Zend/zend_objects.c

From: Date: Mon, 07 Apr 2014 08:14:44 +0000
Subject: com php-src: don't use memset() for array of zval initialization: Zend/zend_execute.c Zend/zend_objects.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-77471@lists.php.net to get a copy of this message
Commit: df7293b07250360f9e9cb113bab54618d1a26881 Author: Dmitry Stogov <dmitry@zend.com> Mon, 7 Apr 2014 12:14:44 +0400 Parents: 8b2bb3013733fd465f8dbe24ffac8418e737463b Branches: phpng Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=df7293b07250360f9e9cb113bab54618d1a26881 Log: don't use memset() for array of zval initialization Changed paths: M Zend/zend_execute.c M Zend/zend_objects.c Diff: diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 3e574e7..31c2514 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 bf985b1..35b237e 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)

« previous php.cvs (#77471) next »