This commit is contained in:
Ethan Lee 2015-07-20 10:03:42 -04:00
Родитель f29dbb7e4d
Коммит 2e9752838d
2 изменённых файлов: 10 добавлений и 2 удалений

Просмотреть файл

@ -80,7 +80,7 @@ namespace SDL2
throw new ArgumentException("ManagedObj must be a string.", "ManagedObj");
}
var bytes = Encoding.UTF8.GetBytes(str);
var mem = Marshal.AllocHGlobal(bytes.Length + 1);
var mem = SDL.SDL_malloc((IntPtr) bytes.Length + 1);
Marshal.Copy(bytes, 0, mem, bytes.Length);
((byte*)mem)[bytes.Length] = 0;
return mem;
@ -94,7 +94,7 @@ namespace SDL2
{
if (!_leaveAllocated)
{
Marshal.FreeHGlobal(pNativeData);
SDL.SDL_free(pNativeData);
}
}

Просмотреть файл

@ -60,6 +60,14 @@ namespace SDL2
SDL_TRUE = 1
}
/* malloc/free are used by the marshaler! -flibit */
[DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)]
internal static extern IntPtr SDL_malloc(IntPtr size);
[DllImport(nativeLibName, CallingConvention = CallingConvention.Cdecl)]
internal static extern void SDL_free(IntPtr memblock);
#endregion
#region SDL_rwops.h