summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/mysqli/mysqli.c2
-rw-r--r--ext/mysqli/mysqli_nonapi.c54
-rw-r--r--ext/mysqli/mysqli_warning.c19
-rw-r--r--ext/mysqlnd/mysqlnd.c2
4 files changed, 34 insertions, 43 deletions
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c
index b99fd767c4..fa376a518a 100644
--- a/ext/mysqli/mysqli.c
+++ b/ext/mysqli/mysqli.c
@@ -497,7 +497,7 @@ static MYSQLND *mysqli_convert_zv_to_mysqlnd(zval * zv TSRMLS_DC)
mysqli_object *intern = Z_MYSQLI_P(zv);
if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) {
/* We know that we have a mysqli object, so this failure should be emitted */
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", intern->zo.ce->name);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", intern->zo.ce->name->val);
return NULL;
}
mysql = (MY_MYSQL *)(my_res->ptr);
diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c
index c9f06551ab..96ede5878c 100644
--- a/ext/mysqli/mysqli_nonapi.c
+++ b/ext/mysqli/mysqli_nonapi.c
@@ -365,7 +365,7 @@ PHP_FUNCTION(mysqli_fetch_all)
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|l", &mysql_result, mysqli_result_class_entry, &mode) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
+ MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID);
if (!mode || (mode & ~MYSQLND_FETCH_BOTH)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Mode can be only MYSQLI_FETCH_NUM, "
@@ -399,7 +399,7 @@ PHP_FUNCTION(mysqli_get_connection_stats)
&mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
- MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID);
+ MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
mysqlnd_get_connection_stats(mysql->mysql, return_value);
}
@@ -636,36 +636,34 @@ PHP_FUNCTION(mysqli_query)
/* {{{ mysqlnd_zval_array_to_mysqlnd_array functions */
static int mysqlnd_zval_array_to_mysqlnd_array(zval *in_array, MYSQLND ***out_array TSRMLS_DC)
{
- zval **elem;
+ zval *elem;
int i = 0, current = 0;
if (Z_TYPE_P(in_array) != IS_ARRAY) {
return 0;
}
*out_array = ecalloc(zend_hash_num_elements(Z_ARRVAL_P(in_array)) + 1, sizeof(MYSQLND *));
- for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(in_array));
- zend_hash_get_current_data(Z_ARRVAL_P(in_array), (void **) &elem) == SUCCESS;
- zend_hash_move_forward(Z_ARRVAL_P(in_array))) {
+ ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(in_array), elem) {
i++;
- if (Z_TYPE_PP(elem) != IS_OBJECT ||
- !instanceof_function(Z_OBJCE_PP(elem), mysqli_link_class_entry TSRMLS_CC)) {
+ if (Z_TYPE_P(elem) != IS_OBJECT ||
+ !instanceof_function(Z_OBJCE_P(elem), mysqli_link_class_entry TSRMLS_CC)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Parameter %d not a mysqli object", i);
} else {
MY_MYSQL *mysql;
MYSQLI_RESOURCE *my_res;
- mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*elem TSRMLS_CC);
+ mysqli_object *intern = Z_MYSQLI_P(elem);
if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "[%d] Couldn't fetch %s", i, intern->zo.ce->name);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "[%d] Couldn't fetch %s", i, intern->zo.ce->name->val);
continue;
}
mysql = (MY_MYSQL*) my_res->ptr;
if (MYSQLI_STATUS_VALID && my_res->status < MYSQLI_STATUS_VALID) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid object %d or resource %s", i, intern->zo.ce->name);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid object %d or resource %s", i, intern->zo.ce->name->val);
continue;
}
(*out_array)[current++] = mysql->mysql;
}
- }
+ } ZEND_HASH_FOREACH_END();
return 0;
}
/* }}} */
@@ -674,32 +672,29 @@ static int mysqlnd_zval_array_to_mysqlnd_array(zval *in_array, MYSQLND ***out_ar
static int mysqlnd_zval_array_from_mysqlnd_array(MYSQLND **in_array, zval *out_array TSRMLS_DC)
{
MYSQLND **p = in_array;
- HashTable *new_hash;
- zval **elem, **dest_elem;
+ zval dest_array;
+ zval *elem, *dest_elem;
int ret = 0, i = 0;
- ALLOC_HASHTABLE(new_hash);
- zend_hash_init(new_hash, zend_hash_num_elements(Z_ARRVAL_P(out_array)), NULL, ZVAL_PTR_DTOR, 0);
+ array_init_size(&dest_array, zend_hash_num_elements(Z_ARRVAL_P(out_array)));
- for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(out_array));
- zend_hash_get_current_data(Z_ARRVAL_P(out_array), (void **) &elem) == SUCCESS;
- zend_hash_move_forward(Z_ARRVAL_P(out_array)))
- {
+ ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(out_array), elem) {
i++;
- if (Z_TYPE_PP(elem) != IS_OBJECT || !instanceof_function(Z_OBJCE_PP(elem), mysqli_link_class_entry TSRMLS_CC)) {
+ if (Z_TYPE_P(elem) != IS_OBJECT ||
+ !instanceof_function(Z_OBJCE_P(elem), mysqli_link_class_entry TSRMLS_CC)) {
continue;
}
{
MY_MYSQL *mysql;
MYSQLI_RESOURCE *my_res;
- mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*elem TSRMLS_CC);
+ mysqli_object *intern = Z_MYSQLI_P(elem);
if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "[%d] Couldn't fetch %s", i, intern->zo.ce->name);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "[%d] Couldn't fetch %s", i, intern->zo.ce->name->val);
continue;
}
mysql = (MY_MYSQL *) my_res->ptr;
if (mysql->mysql == *p) {
- zend_hash_next_index_insert(new_hash, (void *)elem, sizeof(zval *), (void **)&dest_elem);
+ dest_elem = zend_hash_next_index_insert(Z_ARRVAL(dest_array), elem);
if (dest_elem) {
zval_add_ref(dest_elem);
}
@@ -707,14 +702,11 @@ static int mysqlnd_zval_array_from_mysqlnd_array(MYSQLND **in_array, zval *out_a
p++;
}
}
- }
+ } ZEND_HASH_FOREACH_END();
/* destroy old array and add new one */
- zend_hash_destroy(Z_ARRVAL_P(out_array));
- efree(Z_ARRVAL_P(out_array));
-
- zend_hash_internal_pointer_reset(new_hash);
- Z_ARRVAL_P(out_array) = new_hash;
+ zval_ptr_dtor(out_array);
+ ZVAL_COPY_VALUE(out_array, &dest_array);
return 0;
}
@@ -734,7 +726,7 @@ static int mysqlnd_dont_poll_zval_array_from_mysqlnd_array(MYSQLND **in_array, z
mysqli_object *intern = Z_MYSQLI_P(elem);
mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)intern->ptr)->ptr;
if (mysql->mysql == *p) {
- dest_elem = zend_hash_next_index_insert(Z_ARRAY(proxy), elem);
+ dest_elem = zend_hash_next_index_insert(Z_ARRVAL(proxy), elem);
if (dest_elem) {
zval_add_ref(dest_elem);
}
diff --git a/ext/mysqli/mysqli_warning.c b/ext/mysqli/mysqli_warning.c
index 9b85753dd6..9e1cbbf108 100644
--- a/ext/mysqli/mysqli_warning.c
+++ b/ext/mysqli/mysqli_warning.c
@@ -106,7 +106,7 @@ MYSQLI_WARNING *php_new_warning(const zval * reason, int errorno TSRMLS_DC)
w = (MYSQLI_WARNING *)ecalloc(1, sizeof(MYSQLI_WARNING));
ZVAL_DUP(&w->reason, reason);
- convert_to_string(&w->resson);
+ convert_to_string(&w->reason);
//????ZVAL_UTF8_STRINGL(&(w->reason), Z_STRVAL(w->reason), Z_STRLEN(w->reason), ZSTR_AUTOFREE);
@@ -123,7 +123,7 @@ MYSQLI_WARNING * php_get_warnings(MYSQLND_CONN_DATA * mysql TSRMLS_DC)
{
MYSQLI_WARNING *w, *first = NULL, *prev = NULL;
MYSQL_RES *result;
- zval *row;
+ zval row;
if (mysql->m->query(mysql, "SHOW WARNINGS", 13 TSRMLS_CC)) {
return NULL;
@@ -135,24 +135,23 @@ MYSQLI_WARNING * php_get_warnings(MYSQLND_CONN_DATA * mysql TSRMLS_DC)
zval *entry;
int errno;
- MAKE_STD_ZVAL(row);
- mysqlnd_fetch_into(result, MYSQLND_FETCH_NUM, row, MYSQLND_MYSQLI);
- if (Z_TYPE_P(row) != IS_ARRAY) {
+ mysqlnd_fetch_into(result, MYSQLND_FETCH_NUM, &row, MYSQLND_MYSQLI);
+ if (Z_TYPE(row) != IS_ARRAY) {
zval_ptr_dtor(&row);
break;
}
- zend_hash_internal_pointer_reset(Z_ARRVAL_P(row));
+ zend_hash_internal_pointer_reset(Z_ARRVAL(row));
/* 0. we don't care about the first */
- zend_hash_move_forward(Z_ARRVAL_P(row));
+ zend_hash_move_forward(Z_ARRVAL(row));
/* 1. Here comes the error no */
- entry = zend_hash_get_current_data(Z_ARRVAL_P(row));
+ entry = zend_hash_get_current_data(Z_ARRVAL(row));
convert_to_long_ex(entry);
errno = Z_LVAL_P(entry);
- zend_hash_move_forward(Z_ARRVAL_P(row));
+ zend_hash_move_forward(Z_ARRVAL(row));
/* 2. Here comes the reason */
- entry = zend_hash_get_current_data(Z_ARRVAL_P(row));
+ entry = zend_hash_get_current_data(Z_ARRVAL(row));
w = php_new_warning(entry, errno TSRMLS_CC);
/*
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c
index a8881f3b1f..4f1587088a 100644
--- a/ext/mysqlnd/mysqlnd.c
+++ b/ext/mysqlnd/mysqlnd.c
@@ -2729,7 +2729,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, tx_commit_or_rollback)(MYSQLND_CONN_DATA * con
char * name_esc = mysqlnd_escape_string_for_tx_name_in_comment(name TSRMLS_CC);
query_len = mnd_sprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"),
- name_esc? name_esc:"", tmp_str.s->val? tmp_str.s->val:"");
+ name_esc? name_esc:"", tmp_str.s? tmp_str.s->val:"");
smart_str_free(&tmp_str);
if (name_esc) {
mnd_efree(name_esc);