Thanks for your reply. I am still trying to get a successful Makefile going so I have not been able to test this standalone app yet, however in case it helps, I have attached the code that should provide the crash in the meanwhile. The main program is in Standalone.cpp and crashes within FT_New_Memory_Face. I have also provided a sample ttf and the freetype library that I am using with Android (though I have added various 'printfs' for debugging). Thank-you
From: address@hidden Date: Wed, 7 Sep 2011 13:06:36 -0400 Subject: Re: [ft-devel] FT_New_Memory_Face crashes To: address@hidden CC: address@hidden It should be possible to create a self standing example that will compile on a Linux box. It might not have to be fully equivalent as long as it fails in the same way and aids in debugging
Chris
I apologize, I made a copy\paste error when providing the sample, I have corrected it below as they are in fact the same buffers in the code I'm running.
Unfortunately I cannot provide a complete standalone sample as I am working in the Android NDK.
LD From: address@hidden
To: address@hiddenDate: Wed, 7 Sep 2011 03:47:26 -0400
Subject: RE: [ft-devel] FT_New_Memory_Face crashes
In the code sample, FT_NEW_MEMORY_Face()
is passed a different buffer from the one created by LoadFile().
I have loaded an "arial.ttf" file (taken from
my /Windows/Fonts folder) into memory, however passing this into FT_New_Memory_Face
crashes (I have also tried other ttf files, and this function still crashes).
Any clues as to what I might be doing wrong? Note that I am using Freetype with
the Android NDK, so it is difficult to debug, however I find that eventually,
the crash occurs within:
FT_New_Memory_Face ->
FT_Open_Face -> FT_Stream_ReadLong -> crashes at:
if
( p )
{
result = FT_NEXT_LONG( p );
//crashes here, in file ftstream.c, method FT_Stream_ReadLong
}
And below is my code:
unsigned char *fontBuffer = LoadFile("arial.ttf");
zip_uint64_t fSize = GetFileSize("arial.ttf"); // I checked this, and it returns the correct size
FT_Library library;
FT_Face face;
int error = FT_Init_FreeType( &library ); // I checked this, this step succeeds
if( error != 0 )
printf("FT_Init_FreeType failed");
error = FT_New_Memory_Face( library,
(FT_Byte*) fontBuffer,
fSize,
0,
&face );
|