shithub: freetype+ttf2subf

Download patch

ref: b5a0a34be7f8512a1b94859de99f94e4fa8dc6d9
parent: 7085dc9b2efa8a419615018bb53207bd7aaa1a73
author: Werner Lemberg <[email protected]>
date: Sun Aug 15 11:01:02 EDT 2004

* src/otlayout/otlgpos.c (otl_liga_mark2_validate): Add parameter
to handle possible NULL values properly.
Update all callers.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2004-08-15  Werner Lemberg  <[email protected]>
 
+	* src/otlayout/otlgpos.c (otl_liga_mark2_validate): Add parameter
+	to handle possible NULL values properly.
+	Update all callers.
+
+2004-08-15  Werner Lemberg  <[email protected]>
+
 	* src/otlayout/gpos.c: Rename counting variables to be more
 	meaningful.
 	Add copyright.
--- a/src/otlayout/otlgpos.c
+++ b/src/otlayout/otlgpos.c
@@ -478,6 +478,7 @@
   static void
   otl_liga_mark2_validate( OTL_Bytes      table,
                            OTL_UInt       class_count,
+                           OTL_Bool       maybe_zero,
                            OTL_Validator  valid )
   {
     OTL_Bytes  p = table;
@@ -493,7 +494,15 @@
     for ( ; num_components > 0; num_components-- )
       /* scan ligature anchor records */
       for ( count = class_count; class_count > 0; class_count-- )
+      {
+        OTL_UInt  offset = OTL_NEXT_USHORT( p );
+
+
+        if ( !offset && maybe_zero )
+          continue;
+  
         otl_anchor_validate( table + OTL_NEXT_USHORT( p ), valid );
+      }
   }
 
 
@@ -513,7 +522,7 @@
 
     /* scan ligature attach records */
     for ( ; ligature_count > 0; ligature_count-- )
-      otl_liga_mark2_validate( table + OTL_NEXT_USHORT( p ), class_count,
+      otl_liga_mark2_validate( table + OTL_NEXT_USHORT( p ), class_count, 1,
                                valid );
   }
 
@@ -593,7 +602,7 @@
         otl_coverage_validate( table + coverage2, valid );
 
         otl_mark_array_validate( table + array1, valid );
-        otl_liga_mark2_validate( table + array2, num_classes, valid );
+        otl_liga_mark2_validate( table + array2, num_classes, 0, valid );
       }
       break;