From 29af10afe8be0154a6ce2e538ff50aa1a174c9f0 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Tue, 3 Nov 2020 01:35:01 +0100 Subject: [PATCH 1/2] Backport: Fix exiting the finder-commentary buffer Do not merge to master. * lisp/finder.el (finder-exit): Fix exiting the finder-commentary buffer. (Bug#44384) (finder-buffer): New defconst. (finder-list-keywords): Use above new defconst. --- lisp/finder.el | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lisp/finder.el b/lisp/finder.el index 71f8ac740ee..5835144b069 100644 --- a/lisp/finder.el +++ b/lisp/finder.el @@ -178,6 +178,9 @@ directory name and PACKAGE is the name of a package (a symbol). When generating `package--builtins', Emacs assumes any file in DIR is part of the package PACKAGE.") +(defconst finder-buffer "*Finder*" + "Name of the Finder buffer.") + (defun finder-compile-keywords (&rest dirs) "Regenerate list of built-in Emacs packages. This recomputes `package--builtins' and `finder-keywords-hash', @@ -338,9 +341,9 @@ not `finder-known-keywords'." (defun finder-list-keywords () "Display descriptions of the keywords in the Finder buffer." (interactive) - (if (get-buffer "*Finder*") - (pop-to-buffer "*Finder*") - (pop-to-buffer (get-buffer-create "*Finder*")) + (if (get-buffer finder-buffer) + (pop-to-buffer finder-buffer) + (pop-to-buffer (get-buffer-create finder-buffer)) (finder-mode) (let ((inhibit-read-only t)) (erase-buffer) @@ -467,10 +470,9 @@ finder directory, \\[finder-exit] = quit, \\[finder-summary] = help"))) "Exit Finder mode. Quit the window and kill all Finder-related buffers." (interactive) - (let ((buf "*Finder*")) - (if (equal (current-buffer) buf) - (quit-window t) - (and (get-buffer buf) (kill-buffer buf))))) + (quit-window t) + (dolist (buf (list finder-buffer "*Finder-package*")) + (and (get-buffer buf) (kill-buffer buf)))) (defun finder-unload-function () "Unload the Finder library." From 0cdd6c9218f7df5793155e86d2028288b9b38bd1 Mon Sep 17 00:00:00 2001 From: Pip Cet Date: Thu, 22 Oct 2020 13:40:34 +0200 Subject: [PATCH 2/2] Handle Cairo errors in ftcrfont_open * src/ftcrfont.c (ftcrfont_open): Handle Cairo errors (bug#41627). (cherry picked from commit 954a4decfcc8e41084789516773b22d0adc11d91) --- src/ftcrfont.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/ftcrfont.c b/src/ftcrfont.c index a0e18e13cfa..c5dfa099745 100644 --- a/src/ftcrfont.c +++ b/src/ftcrfont.c @@ -139,7 +139,8 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size) FcPatternDestroy (pat); font_face = cairo_ft_font_face_create_for_pattern (match); - if (!font_face) + if (!font_face + || cairo_font_face_status (font_face) != CAIRO_STATUS_SUCCESS) { unblock_input (); FcPatternDestroy (match); @@ -154,6 +155,18 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size) cairo_font_face_destroy (font_face); cairo_font_options_destroy (options); unblock_input (); + if (!scaled_font + || cairo_scaled_font_status (scaled_font) != CAIRO_STATUS_SUCCESS) + { + FcPatternDestroy (match); + return Qnil; + } + ft_face = cairo_ft_scaled_font_lock_face (scaled_font); + if (!ft_face) + { + FcPatternDestroy (match); + return Qnil; + } font_object = font_build_object (VECSIZE (struct font_info), AREF (entity, FONT_TYPE_INDEX), @@ -231,7 +244,6 @@ ftcrfont_open (struct frame *f, Lisp_Object entity, int pixel_size) font->descent = font->height - font->ascent; } - ft_face = cairo_ft_scaled_font_lock_face (scaled_font); if (XFIXNUM (AREF (entity, FONT_SIZE_INDEX)) == 0) { int upEM = ft_face->units_per_EM;