Skip to content

Commit 7ec7a26

Browse files
committed
Fix truncated strings in function
Closes stephencelis#468
1 parent 4eace8e commit 7ec7a26

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

Sources/SQLite/Core/Connection.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ public final class Connection {
616616
} else if let result = result as? Int64 {
617617
sqlite3_result_int64(context, result)
618618
} else if let result = result as? String {
619-
sqlite3_result_text(context, result, Int32(result.count), SQLITE_TRANSIENT)
619+
sqlite3_result_text(context, result, Int32(result.lengthOfBytes(using: .utf8)), SQLITE_TRANSIENT)
620620
} else if result == nil {
621621
sqlite3_result_null(context)
622622
} else {

Tests/SQLiteTests/CustomFunctionsTests.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,12 @@ class CustomFunctionWithTwoArgsTests: SQLiteTestCase {
135135
XCTAssertEqual("ab", result)
136136
}
137137
}
138+
139+
class CustomFunctionTruncation: SQLiteTestCase {
140+
// https://github.com/stephencelis/SQLite.swift/issues/468
141+
func testStringTruncation() {
142+
_ = try! db.createFunction("customLower") { (value: String) in value.lowercased() }
143+
let result = try! db.prepare("SELECT customLower(?)").scalar("TÖL-AA 12") as? String
144+
XCTAssertEqual("töl-aa 12", result)
145+
}
146+
}

0 commit comments

Comments
 (0)