Hello again,

> I've used VS2003 to compile this example, and when the "cache" option is 
> open,
>  the App would crash when execute to "FT_Done_Face( face );". and I can
> see clearly that after "FTC_Manager_Done( cache_man )", the face's memory 
> have
> been throughly destroyed!
>
>   
you're absolutely right !! I had not noticed that the face requester in
ftbench didn't create a new FT_Face object, but simply returned the
global one.

In this case, FTC_Manager_Done does destroy the face, and the second
call to FT_Done_Face is redundant and/or corrupts memory.

I've fixed this in the CVS with the following:

---------------------------------------------------------------------
 /* the following is a bit subtle: when we call FTC_Manager_Done,
  * this normally destroys all FT_Face objects that the cache might
  * have created by calling the face requester.
  *
  * however, this little benchmark as a tricky face requester that
  * doesn't create a new FT_Face through FT_New_Face, but simply
  * pass a pointer to the one that was previously created.
  *
  * if the cache manager was used before, the call to FTC_Manager_Done
  * will discard our single FT_Face.
  *
  * in the case where no cache manager is in place, or if no test
  * was run, the call to FT_Done_FreeType will release any remaining
  * FT_Face anyway
  */
  if ( cache_man )
    FTC_Manager_Done( cache_man );

  FT_Done_FreeType( lib );
------------------------------------------------------------------------

thanks a lot,

- David Turner
- The FreeType Project  (www.freetype.org)






>
>
>
>
> _______________________________________________
> Freetype mailing list
> Freetype@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/freetype
>   



_______________________________________________
Freetype mailing list
Freetype@nongnu.org
http://lists.nongnu.org/mailman/listinfo/freetype

Reply via email to