diff --git a/Cargo.lock b/Cargo.lock index 0054abc875..02f25a01f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3107,7 +3107,7 @@ dependencies = [ [[package]] name = "libsql-sqlite3-parser" -version = "0.13.0" +version = "0.13.1" dependencies = [ "bitflags 2.6.0", "cc", diff --git a/vendored/sqlite3-parser/Cargo.toml b/vendored/sqlite3-parser/Cargo.toml index 0381ac1d99..2715330be6 100644 --- a/vendored/sqlite3-parser/Cargo.toml +++ b/vendored/sqlite3-parser/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libsql-sqlite3-parser" -version = "0.13.0" +version = "0.13.1" edition = "2021" authors = ["gwenn"] description = "SQL parser (as understood by SQLite) (libsql fork)" diff --git a/vendored/sqlite3-parser/src/dialect/mod.rs b/vendored/sqlite3-parser/src/dialect/mod.rs index e0266f10e4..cc06c1a9a0 100644 --- a/vendored/sqlite3-parser/src/dialect/mod.rs +++ b/vendored/sqlite3-parser/src/dialect/mod.rs @@ -58,7 +58,7 @@ impl TokenType { } fn from_bytes(bytes: &[u8]) -> String { - unsafe { str::from_utf8_unchecked(bytes).to_owned() } + String::from_utf8_lossy(bytes).to_string() } include!(concat!(env!("OUT_DIR"), "/keywords.rs")); @@ -403,3 +403,13 @@ impl TokenType { } } } + +#[cfg(test)] +mod tests { + use super::from_bytes; + + #[test] + fn converts_invalid_utf8_lossily() { + assert_eq!(from_bytes(&[0xC0, 0x80]), "��"); + } +}