I'm currently updating the Android FreeType sources to the latest CVS. In doing so, I noticed something that unfortunately escaped me before that: we added a new field to a publicly declared structure, thus breaking the ABI.
More specifically, the declaration of PS_FontInfoRec in include/freetype/t1tables.h is now:
the problem is that this structure can be allocated by the user (either in the heap or the stack), e.g. when calling a function like FT_Get_PS_Font_Info declared as:
It means that any client code that was built against 2.3.7 or older will now experience a nice silent stack or heap memory corruption whenever it calls this function in 2.3.8.
I suggest that we do the following instead:
remove the field from the definition
provide a new function to retrieve the corresponding information, as in FT_Get_PS_FsType() or whatever, that will not break the ABI
release 2.3.9 ASAP explaining why.
I really hope that there isn't any code that relies on this new field out there.
Generalyl speaking, we should *NOT* add fields to public structures, except a very few instances where we know that the
corresponding object should never be stack or heap allocated by the user (FT_Face or FT_GlyphSlot for example). Even in these cases, I'd really prefer that we discuss such changes on the development mailing list before hand.