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