checkpoint
This commit is contained in:
@@ -14,30 +14,14 @@ namespace Foodsoft.Alpm
|
||||
{
|
||||
if (pNativeData == IntPtr.Zero)
|
||||
return;
|
||||
Marshal.FreeHGlobal(pNativeData);
|
||||
Marshal.FreeCoTaskMem(pNativeData);
|
||||
}
|
||||
|
||||
public int GetNativeDataSize() => -1;
|
||||
|
||||
public unsafe IntPtr MarshalManagedToNative(object? managedObj)
|
||||
public IntPtr MarshalManagedToNative(object? managedObj)
|
||||
{
|
||||
if (managedObj is null) return IntPtr.Zero;
|
||||
|
||||
var s = (string) managedObj;
|
||||
|
||||
var nb = Encoding.UTF8.GetMaxByteCount(s.Length);
|
||||
|
||||
var pMem = Marshal.AllocHGlobal(nb + 1);
|
||||
var pbMem = (byte*) pMem;
|
||||
|
||||
int nbWritten;
|
||||
fixed (char* firstChar = s)
|
||||
{
|
||||
nbWritten = Encoding.UTF8.GetBytes(firstChar, s.Length, pbMem, nb);
|
||||
}
|
||||
|
||||
pbMem[nbWritten] = 0;
|
||||
return pMem;
|
||||
return Marshal.StringToCoTaskMemUTF8((string?) managedObj);
|
||||
}
|
||||
|
||||
public object MarshalNativeToManaged(IntPtr pNativeData)
|
||||
|
||||
Reference in New Issue
Block a user