emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 59a11116e01 09/11: Pacify GCC 14 -Wstring-operflow in ftfont.c


From: Paul Eggert
Subject: master 59a11116e01 09/11: Pacify GCC 14 -Wstring-operflow in ftfont.c
Date: Tue, 30 Apr 2024 04:26:38 -0400 (EDT)

branch: master
commit 59a11116e013fb123ba074da9bca373c1aa03367
Author: Paul Eggert <eggert@cs.ucla.edu>
Commit: Paul Eggert <eggert@cs.ucla.edu>

    Pacify GCC 14 -Wstring-operflow in ftfont.c
    
    * src/ftfont.c (ftfont_drive_otf): Do not crash if
    spec->features[i] is nonnull but is empty.
    Use gfeatures local to pacify GCC 14.
---
 src/ftfont.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/ftfont.c b/src/ftfont.c
index 0d10de5408f..2e37b62ea35 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -2030,7 +2030,6 @@ ftfont_drive_otf (MFLTFont *font,
   int i, j, gidx;
   OTF_Glyph *otfg;
   char script[5], *langsys = NULL;
-  char *gsub_features = NULL, *gpos_features = NULL;
   OTF_Feature *features;
 
   if (len == 0)
@@ -2044,6 +2043,7 @@ ftfont_drive_otf (MFLTFont *font,
       OTF_tag_name (spec->langsys, langsys);
     }
 
+  char *gfeatures[2] = {NULL, NULL};
   USE_SAFE_ALLOCA;
   for (i = 0; i < 2; i++)
     {
@@ -2052,11 +2052,10 @@ ftfont_drive_otf (MFLTFont *font,
       if (spec->features[i] && spec->features[i][1] != 0xFFFFFFFF)
        {
          for (j = 0; spec->features[i][j]; j++);
+         if (j == 0)
+           continue;
          SAFE_NALLOCA (p, 6, j);
-         if (i == 0)
-           gsub_features = p;
-         else
-           gpos_features = p;
+         gfeatures[i] = p;
          for (j = 0; spec->features[i][j]; j++)
            {
              if (spec->features[i][j] == 0xFFFFFFFF)
@@ -2071,6 +2070,7 @@ ftfont_drive_otf (MFLTFont *font,
          *--p = '\0';
        }
     }
+  char *gsub_features = gfeatures[0], *gpos_features = gfeatures[1];
 
   setup_otf_gstring (len);
   for (i = 0; i < len; i++)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]