]> granicus.if.org Git - php/commitdiff
Use persistent strings only for persistent connections
authorDmitry Stogov <dmitry@zend.com>
Tue, 23 Oct 2018 07:43:58 +0000 (10:43 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 23 Oct 2018 07:43:58 +0000 (10:43 +0300)
ext/mysqlnd/mysqlnd_connection.c

index 9f8e1fb5b96f48245440de28e874e1cb00d64394..826b47d7173d6a1aab2c348c5c996a01b5f544bf 100644 (file)
@@ -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);
                        }