mirror of
https://github.com/Facepunch/Facepunch.Steamworks.git
synced 2025-03-13 05:50:16 +03:00
Explicitly turn off BOM when marshaling strings to/from Steamworks, just to be safe
This commit is contained in:
parent
b4d3a65f86
commit
0595c9c796
@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
@ -10,6 +6,8 @@ namespace Steamworks
|
||||
{
|
||||
internal unsafe class Utf8StringToNative : ICustomMarshaler
|
||||
{
|
||||
internal static readonly Encoding Utf8NoBom = new UTF8Encoding( false, false );
|
||||
|
||||
public IntPtr MarshalManagedToNative(object managedObj)
|
||||
{
|
||||
if ( managedObj == null )
|
||||
@ -19,10 +17,10 @@ namespace Steamworks
|
||||
{
|
||||
fixed ( char* strPtr = str )
|
||||
{
|
||||
int len = Encoding.UTF8.GetByteCount( str );
|
||||
int len = Utf8NoBom.GetByteCount( str );
|
||||
var mem = Marshal.AllocHGlobal( len + 1 );
|
||||
|
||||
var wlen = System.Text.Encoding.UTF8.GetBytes( strPtr, str.Length, (byte*)mem, len + 1 );
|
||||
var wlen = Utf8NoBom.GetBytes( strPtr, str.Length, (byte*)mem, len + 1 );
|
||||
|
||||
( (byte*)mem )[wlen] = 0;
|
||||
|
||||
@ -64,7 +62,7 @@ namespace Steamworks
|
||||
dataLen++;
|
||||
}
|
||||
|
||||
return Encoding.UTF8.GetString( bytes, dataLen );
|
||||
return Utf8StringToNative.Utf8NoBom.GetString( bytes, dataLen );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user