From c65c320b09c795cb27523ff61eb9f9d92663c8cd Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Sat, 26 Nov 2022 21:42:32 -0800 Subject: [bun:sqlite] Fix bug with latin1 supplemental characters Fixes https://github.com/oven-sh/bun/issues/1553 --- src/bun.js/bindings/sqlite/JSSQLStatement.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/bun.js/bindings/sqlite/JSSQLStatement.cpp') diff --git a/src/bun.js/bindings/sqlite/JSSQLStatement.cpp b/src/bun.js/bindings/sqlite/JSSQLStatement.cpp index 524c131af..9873bd400 100644 --- a/src/bun.js/bindings/sqlite/JSSQLStatement.cpp +++ b/src/bun.js/bindings/sqlite/JSSQLStatement.cpp @@ -286,10 +286,13 @@ static inline bool rebindValue(JSC::JSGlobalObject* lexicalGlobalObject, sqlite3 return false; } - if (roped.is8Bit()) { + if (roped.is8Bit() && roped.isAllASCII()) { CHECK_BIND(sqlite3_bind_text(stmt, i, reinterpret_cast(roped.characters8()), roped.length(), transientOrStatic)); - } else { + } else if (!roped.is8Bit()) { CHECK_BIND(sqlite3_bind_text16(stmt, i, roped.characters16(), roped.length() * 2, transientOrStatic)); + } else { + auto utf8 = roped.utf8(); + CHECK_BIND(sqlite3_bind_text(stmt, i, utf8.data(), utf8.length(), SQLITE_TRANSIENT)); } } else if (UNLIKELY(value.isHeapBigInt())) { -- cgit v1.2.3