* src/base/fttrigon.c (ft_trig_prenorm): fixed a bug that created
invalid computations, resulting in very weird bugs in TrueType
bytecode hinted fonts
* src/truetype/ttinterp.c: redefined FT_UNUSED_EXEC to not perform
a structure copy each time. Wooot. !
diff --git a/ChangeLog b/ChangeLog
index 8aa790d..360b67d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,18 @@
+2005-11-15 David Turner <david@freetype.org>
+
+ * src/base/fttrigon.c (ft_trig_prenorm): fixed a bug that created
+ invalid computations, resulting in very weird bugs in TrueType
+ bytecode hinted fonts
+
+ * src/truetype/ttinterp.c: redefined FT_UNUSED_EXEC to not perform
+ a structure copy each time. Wooot. !
+
2005-11-11 Werner Lemberg <wl@gnu.org>
* src/cache/ftccache.c (FTC_Cache_Clear), src/cache/ftcmanag.c
(FTC_Manager_Check): Remove FT_EXPORT_DEF tag.
- * src/base/ftcalc.c (FT_Add64): Remove FT_EXPORT_DEF tag.
+ * src/base/ftcalc.c (FT_Add64): Remove FT_EXPORT_DEF tag.
(FT_Div64by32, FT_Sqrt32): Commented out. Unused.
* include/freetype/internal/ftcalc.h (SQRT_32): Removed. Unused.
diff --git a/src/base/fttrigon.c b/src/base/fttrigon.c
index b25a152..9f51394 100644
--- a/src/base/fttrigon.c
+++ b/src/base/fttrigon.c
@@ -110,7 +110,6 @@
shift = 0;
#if 1
-
/* determine msb bit index in `shift' */
if ( z >= ( 1L << 16 ) )
{
@@ -132,18 +131,21 @@
z >>= 2;
shift += 2;
}
- if ( z >= 1 )
- shift += 1;
-
- if ( shift < 28 )
+ if ( z >= ( 1L << 1 ) )
{
- shift = 28 - shift;
+ z >>= 1;
+ shift += 1;
+ }
+
+ if ( shift <= 27 )
+ {
+ shift = 27 - shift;
vec->x = x << shift;
vec->y = y << shift;
}
- else if ( shift > 28 )
+ else
{
- shift -= 28;
+ shift -= 27;
vec->x = x >> shift;
vec->y = y >> shift;
shift = -shift;
diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c
index b61cfa6..73ff7f8 100644
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -94,10 +94,14 @@
#define CUR (*exc) /* see ttobjs.h */
+#define FT_UNUSED_EXEC FT_UNUSED(exc)
+
#else /* static implementation */
#define CUR cur
+#define FT_UNUSED_EXEC int __dummy=__dummy
+
static
TT_ExecContextRec cur; /* static exec. context variable */
@@ -120,7 +124,7 @@
/* This macro is used whenever `exec' is unused in a function, to avoid */
/* stupid warnings from pedantic compilers. */
/* */
-#define FT_UNUSED_EXEC FT_UNUSED( CUR )
+/* #define FT_UNUSED_EXEC FT_UNUSED( CUR ) */
/*************************************************************************/