Fix passing strings from C# to C. (#1701)

See also
https://github.com/k2-fsa/sherpa-onnx/issues/1695#issuecomment-2585725190

We need to place a 0 at the end of the buffer.
This commit is contained in:
Fangjun Kuang
2025-01-13 10:17:04 +08:00
committed by GitHub
parent ecc653871d
commit 0d20558b5e
5 changed files with 40 additions and 10 deletions

View File

@@ -26,7 +26,10 @@ namespace SherpaOnnx
public OnlineStream CreateStream(string keywords)
{
byte[] utf8Bytes = Encoding.UTF8.GetBytes(keywords);
IntPtr p = SherpaOnnxCreateKeywordStreamWithKeywords(_handle.Handle, utf8Bytes);
byte[] utf8BytesWithNull = new byte[utf8Bytes.Length + 1]; // +1 for null terminator
Array.Copy(utf8Bytes, utf8BytesWithNull, utf8Bytes.Length);
utf8BytesWithNull[utf8Bytes.Length] = 0; // Null terminator
IntPtr p = SherpaOnnxCreateKeywordStreamWithKeywords(_handle.Handle, utf8BytesWithNull);
return new OnlineStream(p);
}