From 5aa746fb2d45c8871d5552b0621770ef8a259b06 Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Thu, 11 Aug 2022 18:55:02 +0200 Subject: [PATCH] Fix utf16_string_value_ptr() for TruffleRuby * TruffleRuby uses TruffleString which requires all UTF-16 strings to always have an even bytesize. * The code here ensures the UTF-16 string always ends up with 2 \x00 bytes, so append them explicitly to have an even bytesize instead of relying on RSTRING_PTR() adding the second \x00 byte. * Fixes https://github.com/oracle/truffleruby/issues/2704 --- ext/sqlite3/database.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/sqlite3/database.c b/ext/sqlite3/database.c index 0358e8a3..21be26c7 100644 --- a/ext/sqlite3/database.c +++ b/ext/sqlite3/database.c @@ -31,7 +31,7 @@ static char * utf16_string_value_ptr(VALUE str) { StringValue(str); - rb_str_buf_cat(str, "\x00", 1L); + rb_str_buf_cat(str, "\x00\x00", 2L); return RSTRING_PTR(str); }