* Fix a bug in POSIX resource-fork accessor since 2008-10-04
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
diff --git a/ChangeLog b/ChangeLog
index 33236b3..f73ab55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2009-01-22 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
+
+ Fix Savannah bug #25347.
+
+ * src/base/ftobjs.c (open_face_PS_from_sfnt_stream): Rewind
+ the stream to the original position passed to this function,
+ when ft_lookup_PS_in_sfnt_stream() failed.
+ (Mac_Read_sfnt_Resource): Rewind the stream to the head of
+ sfnt resource body, when open_face_PS_from_sfnt_stream()
+ failed.
+
2009-01-19 Michael Lotz <mmlr@mlotz.ch>
Fix Savannah bug #25355.
diff --git a/docs/CHANGES b/docs/CHANGES
index 818053a..1c3a72b 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -2,6 +2,10 @@ CHANGES BETWEEN 2.3.9 and 2.3.8
I. IMPORTANT BUG FIXES
+ - The POSIX support of MacOS resource-fork fonts (Suitcase fonts
+ and LaserWriter Type1 PostScript fonts) was broken in 2.3.8. If
+ FreeType2 is built without Carbon framework, these fonts are not
+ handled correctly. The version 2.3.7 didn't have this bug.
II. IMPORTANT CHANGES
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index fc57c95..e35ab93 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -1417,7 +1417,7 @@
&length,
&is_sfnt_cid );
if ( error )
- return error;
+ goto Exit;
if ( FT_Stream_Seek( stream, pos + offset ) )
goto Exit;
@@ -1605,6 +1605,10 @@
if ( !error )
goto Exit;
+ /* rewind sfnt stream before open_face_PS_from_sfnt_stream() */
+ if ( FT_Stream_Seek( stream, flag_offset + 4 ) )
+ goto Exit;
+
if ( FT_ALLOC( sfnt_data, (FT_Long)rlen ) )
return error;
error = FT_Stream_Read( stream, (FT_Byte *)sfnt_data, rlen );