shithub: freetype+ttf2subf

Download patch

ref: afd89d309d696f9edd4a383d088cc6c05d00880b
parent: 6abb9232b6e1c6b26ff1423a1f0be84e89fa297c
author: Werner Lemberg <[email protected]>
date: Wed Sep 15 09:02:35 EDT 2010

Make bytecode debugging with FontForge work again.

* src/truetype/ttinterp.c (TT_RunIns): Don't call
`free_buffer_in_size' in case of error if a debugger is active.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-09-15  Werner Lemberg  <[email protected]>
+
+	Make bytecode debugging with FontForge work again.
+
+	* src/truetype/ttinterp.c (TT_RunIns): Don't call
+	`free_buffer_in_size' in case of error if a debugger is active.
+
 2010-09-14  Werner Lemberg  <[email protected]>
 
 	Improve tracing messages.
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -8162,13 +8162,15 @@
     *exc = cur;
 #endif
 
-    /* if any errors, function tables may be broken.  */
-    /* it should not be used for next interpretation. */
-    if ( CUR.error )
+    /* If any errors have occurred, function tables may be broken. */
+    /* Force a re-execution of `prep' and `fpgm' tables if no      */
+    /* bytecode debugger is run.                                   */
+    if ( CUR.error && !CUR.instruction_trap )
     {
       FT_TRACE1(( "  The interpreter returned error 0x%x\n", CUR.error ));
       free_buffer_in_size( exc );
-      exc->size->cvt_ready = FALSE;  
+
+      exc->size->cvt_ready      = FALSE;  
       exc->size->bytecode_ready = FALSE;  
     }