shithub: freetype+ttf2subf

Download patch

ref: 06d6916c96954465ed66041507d343dc982b506f
parent: f5e2e3982826a55b0a82bb6671c774af772cbfd3
author: Johnson Y. Yan <[email protected]>
date: Sat Dec 8 19:07:51 EST 2012

[type1] Another fix for 2012-09-17 commit.

* src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Correctly set
`limit' value.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-12-09  Johnson Y. Yan  <[email protected]>
+
+	[type1] Another fix for 2012-09-17 commit.
+
+	* src/type1/t1parse.c (T1_Get_Private_Dict) <found>: Correctly set
+	`limit' value.
+
 2012-12-06  Alexei Podtelezhnikov  <[email protected]>
 
 	[truetype] Tweak the previous commit.
--- a/src/type1/t1parse.c
+++ b/src/type1/t1parse.c
@@ -342,7 +342,7 @@
       {
         c = cur[0];
         if ( c == 'e' && cur + 9 < limit )  /* 9 = 5 letters for `eexec' + */
-                                            /* newline + 4 chars           */
+                                            /* whitespace + 4 chars        */
         {
           if ( cur[1] == 'e' &&
                cur[2] == 'x' &&
@@ -364,7 +364,7 @@
       /* or string (as e.g. in u003043t.gsf from ghostscript)       */
 
       parser->root.cursor = parser->base_dict;
-      /* set limit to `eexec' + newline + 4 characters */
+      /* set limit to `eexec' + whitespace + 4 characters */
       parser->root.limit  = cur + 10;
 
       cur   = parser->root.cursor;
@@ -397,7 +397,8 @@
       parser->root.limit = parser->base_dict + parser->base_len;
 
       T1_Skip_PS_Token( parser );
-      cur = parser->root.cursor;
+      cur   = parser->root.cursor;
+      limit = parser->root.limit;
 
       /* according to the Type1 spec, the first cipher byte must not be  */
       /* an ASCII whitespace character code (blank, tab, carriage return */
@@ -438,9 +439,9 @@
       /* now determine whether the private dictionary is encoded in binary */
       /* or hexadecimal ASCII format -- decode it accordingly              */
 
-      /* we need to access the next 4 bytes (after the final \r following */
-      /* the `eexec' keyword); if they all are hexadecimal digits, then   */
-      /* we have a case of ASCII storage                                  */
+      /* we need to access the next 4 bytes (after the final whitespace */
+      /* following the `eexec' keyword); if they all are hexadecimal    */
+      /* digits, then we have a case of ASCII storage                   */
 
       if ( cur + 3 < limit                                &&
            ft_isxdigit( cur[0] ) && ft_isxdigit( cur[1] ) &&