[Bf-blender-cvs] [2820f7be763] master: Fix T80340: Crash with an empty text with Text on Curve

Campbell Barton noreply at git.blender.org
Thu Sep 3 05:35:07 CEST 2020


Commit: 2820f7be7637e0a4f7edb60f235a876bdc6f0360
Author: Campbell Barton
Date:   Thu Sep 3 12:37:24 2020 +1000
Branches: master
https://developer.blender.org/rB2820f7be7637e0a4f7edb60f235a876bdc6f0360

Fix T80340: Crash with an empty text with Text on Curve

Avoid divide by zero, based on D8780 by @lichtwerk.

===================================================================

M	source/blender/blenkernel/intern/font.c

===================================================================

diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c
index bb1bf8a98c5..6eaa79d5062 100644
--- a/source/blender/blenkernel/intern/font.c
+++ b/source/blender/blenkernel/intern/font.c
@@ -1273,7 +1273,13 @@ static bool vfont_to_curve(Object *ob,
       /* We put the x-coordinate exact at the curve, the y is rotated. */
 
       /* length correction */
-      distfac = sizefac * cu->textoncurve->runtime.curve_cache->path->totdist / (maxx - minx);
+      float chartrans_size_x = maxx - minx;
+      if (UNLIKELY(chartrans_size_x == 0.0f)) {
+        /* Happens when there are no characters,
+         * the result isn't useful in this case, just avoid divide by zero. */
+        chartrans_size_x = 1.0f;
+      }
+      distfac = sizefac * cu->textoncurve->runtime.curve_cache->path->totdist / chartrans_size_x;
       timeofs = 0.0f;
 
       if (distfac > 1.0f) {
@@ -1294,7 +1300,7 @@ static bool vfont_to_curve(Object *ob,
         distfac = 1.0;
       }
 
-      distfac /= (maxx - minx);
+      distfac /= chartrans_size_x;
 
       timeofs += distfac * cu->xof; /* not cyclic */



More information about the Bf-blender-cvs mailing list