emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 4d176b7 3/7: Fix ftfont_open2 failure cleanup


From: Paul Eggert
Subject: [Emacs-diffs] master 4d176b7 3/7: Fix ftfont_open2 failure cleanup
Date: Thu, 7 Jun 2018 22:11:57 -0400 (EDT)

branch: master
commit 4d176b742774670c5c265a06f742e63a43f5f7ab
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Fix ftfont_open2 failure cleanup
    
    * src/ftfont.c (ftfont_open2): Don’t increment counter if failing.
    Avoid use-after-free once the increment bug is fixed.
---
 src/ftfont.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/ftfont.c b/src/ftfont.c
index 9a8777e..a534670 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -1131,16 +1131,19 @@ ftfont_open2 (struct frame *f,
          return Qnil;
        }
     }
-  set_save_integer (val, 1, XSAVE_INTEGER (val, 1) + 1);
   size = XINT (AREF (entity, FONT_SIZE_INDEX));
   if (size == 0)
     size = pixel_size;
   if (FT_Set_Pixel_Sizes (ft_face, size, size) != 0)
     {
       if (XSAVE_INTEGER (val, 1) == 0)
-       FT_Done_Face (ft_face);
+       {
+         FT_Done_Face (ft_face);
+         cache_data->ft_face = NULL;
+       }
       return Qnil;
     }
+  set_save_integer (val, 1, XSAVE_INTEGER (val, 1) + 1);
 
   ASET (font_object, FONT_FILE_INDEX, filename);
   font = XFONT_OBJECT (font_object);



reply via email to

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