From a8a982d3a4d0fb2ae9bdcbb897e0e9ca1c4147f8 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Fri, 24 Dec 2021 15:46:31 -0800 Subject: [PATCH] SQLite Store: Fix storing strings with multi byte Unicode sequences --- Utils/SQLiteStore.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Utils/SQLiteStore.m b/Utils/SQLiteStore.m index 48390d64e..3d13c306b 100644 --- a/Utils/SQLiteStore.m +++ b/Utils/SQLiteStore.m @@ -661,10 +661,13 @@ static SQLiteStore *g_sharedStore = NULL; return -1; } + const char * str = [string UTF8String]; + uint64_t len = strlen(str); // SQLite expects number of bytes, not characters + sqlite3_stmt *st = stmt[stmt_select_string]; if (sqlite3_reset(st) || - sqlite3_bind_text64(st, select_string_in_id, [string UTF8String], [string length], SQLITE_STATIC, SQLITE_UTF8)) + sqlite3_bind_text64(st, select_string_in_id, str, len, SQLITE_STATIC, SQLITE_UTF8)) { return -1; } @@ -691,7 +694,7 @@ static SQLiteStore *g_sharedStore = NULL; st = stmt[stmt_add_string]; if (sqlite3_reset(st) || - sqlite3_bind_text64(st, add_string_in_value, [string UTF8String], [string length], SQLITE_STATIC, SQLITE_UTF8) || + sqlite3_bind_text64(st, add_string_in_value, str, len, SQLITE_STATIC, SQLITE_UTF8) || sqlite3_step(st) != SQLITE_DONE || sqlite3_reset(st)) {