com php-src: Avoid incomplete zend_internal_function init ialization.: ext/pdo/pdo_dbh.c
| From: | Dmitry Stogov | Date: | Wed, 13 Jan 2016 12:06:17 +0000 |
| Subject: | com php-src: Avoid incomplete zend_internal_function init ialization.: ext/pdo/pdo_dbh.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-90632@lists.php.net to get a copy of this message | ||
Commit: 6a2621e3a5ba9ece6d1d6a56a5bd886d4c5dece1
Author: Dmitry Stogov <dmitry@zend.com> Wed, 13 Jan 2016 15:06:17 +0300
Parents: 39f09507464bfa398c476a64d8b16b4061a3faec
Branches: PHP-7.0 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=6a2621e3a5ba9ece6d1d6a56a5bd886d4c5dece1
Log:
Avoid incomplete zend_internal_function initialization.
Changed paths:
M ext/pdo/pdo_dbh.c
Diff:
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c
index cc6346b..886a672 100644
--- a/ext/pdo/pdo_dbh.c
+++ b/ext/pdo/pdo_dbh.c
@@ -1274,8 +1274,7 @@ static void cls_method_pdtor(zval *el) /* {{{ */ {
int pdo_hash_methods(pdo_dbh_object_t *dbh_obj, int kind)
{
const zend_function_entry *funcs;
- zend_function func;
- zend_internal_function *ifunc = (zend_internal_function*)&func;
+ zend_internal_function func;
size_t namelen;
char *lc_name;
pdo_dbh_t *dbh = dbh_obj->inner;
@@ -1294,41 +1293,43 @@ int pdo_hash_methods(pdo_dbh_object_t *dbh_obj, int kind)
zend_hash_init_ex(dbh->cls_methods[kind], 8, NULL,
dbh->is_persistent? cls_method_pdtor : cls_method_dtor, dbh->is_persistent, 0);
+ memset(&func, 0, sizeof(func));
+
while (funcs->fname) {
- ifunc->type = ZEND_INTERNAL_FUNCTION;
- ifunc->handler = funcs->handler;
- ifunc->function_name = zend_string_init(funcs->fname, strlen(funcs->fname),
dbh->is_persistent);
- ifunc->scope = dbh_obj->std.ce;
- ifunc->prototype = NULL;
+ func.type = ZEND_INTERNAL_FUNCTION;
+ func.handler = funcs->handler;
+ func.function_name = zend_string_init(funcs->fname, strlen(funcs->fname),
dbh->is_persistent);
+ func.scope = dbh_obj->std.ce;
+ func.prototype = NULL;
if (funcs->flags) {
- ifunc->fn_flags = funcs->flags | ZEND_ACC_NEVER_CACHE;
+ func.fn_flags = funcs->flags | ZEND_ACC_NEVER_CACHE;
} else {
- ifunc->fn_flags = ZEND_ACC_PUBLIC | ZEND_ACC_NEVER_CACHE;
+ func.fn_flags = ZEND_ACC_PUBLIC | ZEND_ACC_NEVER_CACHE;
}
if (funcs->arg_info) {
zend_internal_function_info *info = (zend_internal_function_info*)funcs->arg_info;
- ifunc->arg_info = (zend_internal_arg_info*)funcs->arg_info + 1;
- ifunc->num_args = funcs->num_args;
+ func.arg_info = (zend_internal_arg_info*)funcs->arg_info + 1;
+ func.num_args = funcs->num_args;
if (info->required_num_args == -1) {
- ifunc->required_num_args = funcs->num_args;
+ func.required_num_args = funcs->num_args;
} else {
- ifunc->required_num_args = info->required_num_args;
+ func.required_num_args = info->required_num_args;
}
if (info->return_reference) {
- ifunc->fn_flags |= ZEND_ACC_RETURN_REFERENCE;
+ func.fn_flags |= ZEND_ACC_RETURN_REFERENCE;
}
if (funcs->arg_info[funcs->num_args]..is_variadic) {
- ifunc->fn_flags |= ZEND_ACC_VARIADIC;
+ func.fn_flags |= ZEND_ACC_VARIADIC;
/* Don't count the variadic argument */
- ifunc->num_args--;
+ func.num_args--;
}
} else {
- ifunc->arg_info = NULL;
- ifunc->num_args = 0;
- ifunc->required_num_args = 0;
+ func.arg_info = NULL;
+ func.num_args = 0;
+ func.required_num_args = 0;
}
- zend_set_function_arg_flags((zend_function*)ifunc);
+ zend_set_function_arg_flags(&func);
namelen = strlen(funcs->fname);
lc_name = emalloc(namelen+1);
zend_str_tolower_copy(lc_name, funcs->fname, namelen);