Commit 610ee58e07090ead529849b2a454bb6c503b4995

Alexei Podtelezhnikov 2013-01-25T23:33:00

[base] Fix broken emboldening at small sizes. * src/base/ftoutln.c (FT_Outline_EmboldenXY): Do not attempt to normalize zero-length vectors.

diff --git a/ChangeLog b/ChangeLog
index c06065c..a3da505 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-01-23  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+	[base] Fix broken emboldening at small sizes.
+
+	* src/base/ftoutln.c (FT_Outline_EmboldenXY): Do not attempt to
+	normalize zero-length vectors.
+
 2013-01-25  Werner Lemberg  <wl@gnu.org>
 
 	Fix Savannah bug #38167.
diff --git a/src/base/ftoutln.c b/src/base/ftoutln.c
index 72d3c5a..0efd88b 100644
--- a/src/base/ftoutln.c
+++ b/src/base/ftoutln.c
@@ -942,8 +942,11 @@
       in.x = v_cur.x - v_prev.x;
       in.y = v_cur.y - v_prev.y;
       l_in = FT_Vector_Length( &in );
-      in.x = FT_DivFix( in.x, l_in );
-      in.y = FT_DivFix( in.y, l_in );
+      if ( l_in )
+      {
+        in.x = FT_DivFix( in.x, l_in );
+        in.y = FT_DivFix( in.y, l_in );
+      }
 
       for ( n = first; n <= last; n++ )
       {
@@ -956,8 +959,11 @@
         out.x = v_next.x - v_cur.x;
         out.y = v_next.y - v_cur.y;
         l_out = FT_Vector_Length( &out );
-        out.x = FT_DivFix( out.x, l_out );
-        out.y = FT_DivFix( out.y, l_out );
+        if ( l_out )
+        {
+          out.x = FT_DivFix( out.x, l_out );
+          out.y = FT_DivFix( out.y, l_out );
+        }
 
         d = FT_MulFix( in.x, out.x ) + FT_MulFix( in.y, out.y );