[builds/windows] Use native memory allocation API. * builds/windows/ftsystem.c (ft_alloc, ft_realloc, ft_free): Wrap HeapAlloc, HeapReAlloc, and HeapFree. (FT_New_Memory): Set the heap handle.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
diff --git a/builds/windows/ftsystem.c b/builds/windows/ftsystem.c
index 32c8edc..9a6f0c4 100644
--- a/builds/windows/ftsystem.c
+++ b/builds/windows/ftsystem.c
@@ -25,11 +25,10 @@
#include <freetype/fttypes.h>
#include <freetype/internal/ftstream.h>
- /* memory-mapping includes and definitions */
+ /* memory mapping and allocation includes and definitions */
+#define WIN32_LEAN_AND_MEAN
#include <windows.h>
-#include <stdlib.h>
-
/**************************************************************************
*
@@ -69,9 +68,7 @@
ft_alloc( FT_Memory memory,
long size )
{
- FT_UNUSED( memory );
-
- return malloc( size );
+ return HeapAlloc( memory->user, 0, size );
}
@@ -105,10 +102,9 @@
long new_size,
void* block )
{
- FT_UNUSED( memory );
FT_UNUSED( cur_size );
- return realloc( block, new_size );
+ return HeapReAlloc( memory->user, 0, block, new_size );
}
@@ -131,9 +127,7 @@
ft_free( FT_Memory memory,
void* block )
{
- FT_UNUSED( memory );
-
- free( block );
+ HeapFree( memory->user, 0, block );
}
@@ -357,13 +351,17 @@
FT_BASE_DEF( FT_Memory )
FT_New_Memory( void )
{
+ HANDLE heap;
FT_Memory memory;
- memory = (FT_Memory)malloc( sizeof ( *memory ) );
+ heap = GetProcessHeap();
+ memory = heap ? (FT_Memory)HeapAlloc( heap, 0, sizeof ( *memory ) )
+ : NULL;
+
if ( memory )
{
- memory->user = NULL;
+ memory->user = heap;
memory->alloc = ft_alloc;
memory->realloc = ft_realloc;
memory->free = ft_free;