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 :-).