Ondřej Surý:
> Hi Lucas,
> 
> this: https://github.com/libgd/libgd/issues/615 ?
> 
>[...]
> 

Hi Ondřej,

Thanks for the link.  It indeed looks related and if I special case
0-sized strings in mscgen, the error goes away (see attached patch).

Should I apply this patch to mscgen, or should this be fixed in libgd2?

~Niels

diff --git a/src/gd_out.c b/src/gd_out.c
index 64d82b2..34451f9 100644
--- a/src/gd_out.c
+++ b/src/gd_out.c
@@ -194,6 +194,12 @@ unsigned int gdoTextWidth(struct ADrawTag *ctx,
     int         rect[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
     const char *r;
 
+    /* Work around https://github.com/libgd/libgd/issues/615 */
+    if (string[0] == '\0')
+    {
+      return 0;
+    }
+
     r = gdImageStringFT(NULL,
                         rect,
                         context->pen,
@@ -297,6 +303,11 @@ void gdoTextR(struct ADrawTag *ctx,
     int         textWidth;
 
     textWidth = gdoTextWidth(ctx, string);
+    /* Work around https://github.com/libgd/libgd/issues/615 */
+    if (textWidth == 0)
+    {
+        return;
+    }
 
     /* Range check since gdImageFilledRectangle() takes signed values */
     if(x + textWidth <= INT_MAX && y <= INT_MAX)

Reply via email to