From: Pierre Joye Date: Sat, 17 May 2014 13:34:03 +0000 (+0200) Subject: fix smart string usage (work in progress), ps: a lot of len tests are done twice... X-Git-Tag: POST_PHPNG_MERGE~328^2~11 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6223702cf43d7c46ee9adf81104826738db053b7;p=php fix smart string usage (work in progress), ps: a lot of len tests are done twice or more, rooms for cleanup here --- diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index 893a144c4b..b6d36221cf 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -2416,7 +2416,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option)(MYSQLND_CONN_DATA * const c case MYSQL_OPT_CONNECT_ATTR_DELETE: if (conn->options->connect_attr && value) { DBG_INF_FMT("Before delete %d attribute(s)", zend_hash_num_elements(conn->options->connect_attr)); - zend_hash_del(conn->options->connect_attr, value, strlen(value)); + zend_hash_str_del(conn->options->connect_attr, value, strlen(value)); DBG_INF_FMT("%d left", zend_hash_num_elements(conn->options->connect_attr)); } break; @@ -2500,7 +2500,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option_2d)(MYSQLND_CONN_DATA * cons if (!copyv) { goto oom; } - zend_hash_update(conn->options->connect_attr, key, strlen(key), ©v, sizeof(char *), NULL); + zend_hash_str_update_ptr(conn->options->connect_attr, key, strlen(key), (void*)©v); } break; default: @@ -2669,24 +2669,24 @@ static void MYSQLND_METHOD(mysqlnd_conn_data, tx_cor_options_to_string)(const MYSQLND_CONN_DATA * const conn, smart_str * str, const unsigned int mode TSRMLS_DC) { if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { - if (str->len) { + if (str->s->len) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { - if (str->len) { + if (str->s->len) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); } if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { - if (str->len) { + if (str->s->len) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { - if (str->len) { + if (str->s->len) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); @@ -2749,7 +2749,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, tx_commit_or_rollback)(MYSQLND_CONN_DATA * con if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) { do { - smart_str tmp_str = {0, 0, 0}; + smart_str tmp_str = {0, 0}; conn->m->tx_cor_options_to_string(conn, &tmp_str, flags TSRMLS_CC); smart_str_0(&tmp_str); @@ -2760,7 +2760,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.c? tmp_str.c:""); + name_esc? name_esc:"", tmp_str.s->val? tmp_str.s->val:""); smart_str_free(&tmp_str); if (name_esc) { mnd_efree(name_esc); @@ -2793,9 +2793,9 @@ MYSQLND_METHOD(mysqlnd_conn_data, tx_begin)(MYSQLND_CONN_DATA * conn, const unsi if (PASS == conn->m->local_tx_start(conn, this_func TSRMLS_CC)) { do { - smart_str tmp_str = {0, 0, 0}; + smart_str tmp_str = {0, 0}; if (mode & TRANS_START_WITH_CONSISTENT_SNAPSHOT) { - if (tmp_str.len) { + if (tmp_str.s->len) { smart_str_appendl(&tmp_str, ", ", sizeof(", ") - 1); } smart_str_appendl(&tmp_str, "WITH CONSISTENT SNAPSHOT", sizeof("WITH CONSISTENT SNAPSHOT") - 1); @@ -2807,12 +2807,12 @@ MYSQLND_METHOD(mysqlnd_conn_data, tx_begin)(MYSQLND_CONN_DATA * conn, const unsi smart_str_free(&tmp_str); break; } else if (mode & TRANS_START_READ_WRITE) { - if (tmp_str.len) { + if (tmp_str.s->len) { smart_str_appendl(&tmp_str, ", ", sizeof(", ") - 1); } smart_str_appendl(&tmp_str, "READ WRITE", sizeof("READ WRITE") - 1); } else if (mode & TRANS_START_READ_ONLY) { - if (tmp_str.len) { + if (tmp_str.s->len) { smart_str_appendl(&tmp_str, ", ", sizeof(", ") - 1); } smart_str_appendl(&tmp_str, "READ ONLY", sizeof("READ ONLY") - 1); @@ -2823,7 +2823,7 @@ MYSQLND_METHOD(mysqlnd_conn_data, tx_begin)(MYSQLND_CONN_DATA * conn, const unsi { char * name_esc = mysqlnd_escape_string_for_tx_name_in_comment(name TSRMLS_CC); char * query; - unsigned int query_len = mnd_sprintf(&query, 0, "START TRANSACTION%s %s", name_esc? name_esc:"", tmp_str.c? tmp_str.c:""); + unsigned int query_len = mnd_sprintf(&query, 0, "START TRANSACTION%s %s", name_esc? name_esc:"", tmp_str.s->val? tmp_str.s->val:""); smart_str_free(&tmp_str); if (name_esc) { mnd_efree(name_esc);