Hi Werner,
I think I have found a code problem with the memory debugging routines on 
WIN64. While they are only visible on win64, and only if you try to do a devel 
/debug build, it probably needs to be fixed at some point; but the fix seems a 
bit tricky.
The underlying problem is that "long" is 32-bit on 64-bit windows. Thus there 
are two problems:
- FT_Alloc_Func and FT_Realloc_Func have "long" in the headers but have FT_Long 
in the implementation of the debug pairs. (the normal pair have "long"). Some 
consistency would be good. I tried changing the header to FT_Long (and 
redefining FT_Long to 64-bit) but unfortunately the public header does not 
include the FT_Long definition in inttypes.h and it gets rather ugly when 
different part of FreeType thinks of FT_Long with different sizes... Those 
functions need a 64-bit type in the prototype, and neither "long" nor "FT_Long" 
are currently 64-bit on win64.
- the other thing I try is simply putting a lot of _int64 with a lot of '#ifdef 
_WIN64` .  That works a bit better but visually quite messy. Also a lot of the 
printf's format specifier (all those "%ld" 's ) needs to be changed.
Anyway, this is probably a long-ish and low-priority change as it only affects 
64-bit debug build.
Also, I am currently looking at a win64-only crash of FontVal at last - and 
found some of the trace statements a bit odd as they only output at the end of 
a successful run e.g. in FT_Load_Glyph - how do you feel about sprinkling some 
on routine entry? I am adding one for myself anyway - just wondering if you 
want such thing upstreamed :-).
Hin-Tak
_______________________________________________
Freetype-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to