diff options
author | 2022-11-26 21:42:32 -0800 | |
---|---|---|
committer | 2022-11-26 21:42:32 -0800 | |
commit | c65c320b09c795cb27523ff61eb9f9d92663c8cd (patch) | |
tree | 820f29b4d48bf1195bf310eea78b8c185218dc18 /src/bun.js/bindings/sqlite/JSSQLStatement.cpp | |
parent | a53ed1bde10de5a70197db5e55e966b634034a6f (diff) | |
download | bun-c65c320b09c795cb27523ff61eb9f9d92663c8cd.tar.gz bun-c65c320b09c795cb27523ff61eb9f9d92663c8cd.tar.zst bun-c65c320b09c795cb27523ff61eb9f9d92663c8cd.zip |
[bun:sqlite] Fix bug with latin1 supplemental characters
Fixes https://github.com/oven-sh/bun/issues/1553
Diffstat (limited to 'src/bun.js/bindings/sqlite/JSSQLStatement.cpp')
-rw-r--r-- | src/bun.js/bindings/sqlite/JSSQLStatement.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
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<const char*>(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())) { |