shithub: freetype+ttf2subf

Download patch

ref: 2dc107949433f00905fab4206a5ec47c51ecb6d3
parent: a79de11b222a0017b9f9aadb1d081f79a9a3da04
author: Suzuki, Toshiya (鈴木俊哉) <[email protected]>
date: Fri Jan 9 00:07:15 EST 2009

* src/base/ftobjs.c (FT_Done_Library): Issue an error when FT_Done_Face() is failed and retried

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-01-09  suzuki toshiya  <[email protected]>
+
+	* src/base/ftobjs.c (FT_Done_Library): Issue an error message when
+	FT_Done_Face() cannot free all faces. If the list of the opened
+	faces includes broken face which FT_Done_Face() cannot free,
+	FT_Done_Library() retries FT_Done_Face() and it can fall into
+	an endless loop. See the discussion:
+	http://lists.gnu.org/archive/html/freetype-devel/2008-09/msg00047.html
+	http://lists.gnu.org/archive/html/freetype-devel/2008-10/msg00000.html
+
 2009-01-07  Werner Lemberg  <[email protected]>
 
 	* docs/CHANGES: Document new key `a' in ftdiff.
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -4196,7 +4196,11 @@
 
         faces = &FT_DRIVER(module)->faces_list;
         while ( faces->head )
+	{
           FT_Done_Face( FT_FACE( faces->head->data ) );
+	  if ( faces->head )
+            FT_ERROR(( "FT_Done_Library: failed to free some faces\n" ));
+	}
       }
     }