aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/sqlite/JSSQLStatement.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-26 21:42:32 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-26 21:42:32 -0800
commitc65c320b09c795cb27523ff61eb9f9d92663c8cd (patch)
tree820f29b4d48bf1195bf310eea78b8c185218dc18 /src/bun.js/bindings/sqlite/JSSQLStatement.cpp
parenta53ed1bde10de5a70197db5e55e966b634034a6f (diff)
downloadbun-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.cpp7
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())) {