summaryrefslogtreecommitdiff
path: root/ext/mysqlnd/mysqlnd_connection.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-10-23 10:43:58 +0300
committerDmitry Stogov <dmitry@zend.com>2018-10-23 10:43:58 +0300
commit0459640fcdf1c35d2ab619c74b9e471d852154de (patch)
treee4e01da016c9d7a5c98d1a8d00ca24ec5d9b0da7 /ext/mysqlnd/mysqlnd_connection.c
parent149e6aaa99cf9b94987fe23b999443ca56db1caf (diff)
downloadphp-git-0459640fcdf1c35d2ab619c74b9e471d852154de.tar.gz
Use persistent strings only for persistent connections
Diffstat (limited to 'ext/mysqlnd/mysqlnd_connection.c')
-rw-r--r--ext/mysqlnd/mysqlnd_connection.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/ext/mysqlnd/mysqlnd_connection.c b/ext/mysqlnd/mysqlnd_connection.c
index 9f8e1fb5b9..826b47d717 100644
--- a/ext/mysqlnd/mysqlnd_connection.c
+++ b/ext/mysqlnd/mysqlnd_connection.c
@@ -1810,10 +1810,17 @@ MYSQLND_METHOD(mysqlnd_conn_data, set_client_option_2d)(MYSQLND_CONN_DATA * cons
DBG_INF_FMT("Adding [%s][%s]", key, value);
{
zval attrz;
- zend_string *str = zend_string_init(key, strlen(key), 1);
- GC_MAKE_PERSISTENT_LOCAL(str);
- ZVAL_NEW_STR(&attrz, zend_string_init(value, strlen(value), conn->persistent));
- GC_MAKE_PERSISTENT_LOCAL(Z_COUNTED(attrz));
+ zend_string *str;
+
+ if (conn->persistent) {
+ str = zend_string_init(key, strlen(key), 1);
+ GC_MAKE_PERSISTENT_LOCAL(str);
+ ZVAL_NEW_STR(&attrz, zend_string_init(value, strlen(value), 1));
+ GC_MAKE_PERSISTENT_LOCAL(Z_COUNTED(attrz));
+ } else {
+ str = zend_string_init(key, strlen(key), 0);
+ ZVAL_NEW_STR(&attrz, zend_string_init(value, strlen(value), 0));
+ }
zend_hash_update(conn->options->connect_attr, str, &attrz);
zend_string_release_ex(str, 1);
}