From 43ac692a09bf497909b7bb3eff72bbc7c5aedd9a Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sun, 9 Feb 2025 18:42:49 +0100 Subject: [PATCH] Use faster string operations in sqlite3 --- ext/sqlite3/sqlite3.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 2037bb677df..c960aaab000 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -833,13 +833,14 @@ static int sqlite3_do_callback(zend_fcall_info_cache *fcc, uint32_t argc, sqlite break; default: { - zend_string *str = zval_try_get_string(&retval); + zend_string *tmp; + zend_string *str = zval_try_get_tmp_string(&retval, &tmp); if (UNEXPECTED(!str)) { ret = FAILURE; break; } sqlite3_result_text(context, ZSTR_VAL(str), ZSTR_LEN(str), SQLITE_TRANSIENT); - zend_string_release(str); + zend_tmp_string_release(tmp); break; } } @@ -1564,7 +1565,8 @@ static int php_sqlite3_bind_params(php_sqlite3_stmt *stmt_obj) /* {{{ */ } case SQLITE3_TEXT: { - zend_string *str = zval_try_get_string(parameter); + zend_string *tmp; + zend_string *str = zval_try_get_tmp_string(parameter, &tmp); if (UNEXPECTED(!str)) { return FAILURE; } @@ -1572,7 +1574,7 @@ static int php_sqlite3_bind_params(php_sqlite3_stmt *stmt_obj) /* {{{ */ if (return_code != SQLITE_OK) { php_sqlite3_error(stmt_obj->db_obj, return_code, "Unable to bind parameter number " ZEND_LONG_FMT, param->param_number); } - zend_string_release(str); + zend_tmp_string_release(tmp); break; } @@ -1998,7 +2000,7 @@ PHP_METHOD(SQLite3Result, fetchArray) static void sqlite3result_clear_column_names_cache(php_sqlite3_result *result) { if (result->column_names) { for (int i = 0; i < result->column_count; i++) { - zend_string_release(result->column_names[i]); + zend_string_release_ex(result->column_names[i], false); } efree(result->column_names); }