From 1da5b2c60b6ad3747046cbe9060d35a6d110a97c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 30 Jul 2021 21:17:58 +0300 Subject: Avoid segfault when set-fontset-font is called from non-GUI frames * src/fontset.c (check_fontset_name): Avoid crashes if this is called from a non-GUI frame. (Bug#49782) --- src/fontset.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/fontset.c') diff --git a/src/fontset.c b/src/fontset.c index 332be6c39d1..52c7e381e15 100644 --- a/src/fontset.c +++ b/src/fontset.c @@ -1356,6 +1356,9 @@ check_fontset_name (Lisp_Object name, Lisp_Object *frame) int id; struct frame *f = decode_live_frame (*frame); + if (!FRAME_WINDOW_P (f)) + error ("Can't use fontsets in non-GUI frames"); + XSETFRAME (*frame, f); if (EQ (name, Qt)) -- cgit v1.2.3 From d9bc7dbefd88995d04b9843f521d82118265fecf Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 30 Jul 2021 21:51:59 +0300 Subject: * src/fontset.c (check_fontset_name): Fix last change. --- src/fontset.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/fontset.c') diff --git a/src/fontset.c b/src/fontset.c index 52c7e381e15..d2d428da2ee 100644 --- a/src/fontset.c +++ b/src/fontset.c @@ -1356,7 +1356,7 @@ check_fontset_name (Lisp_Object name, Lisp_Object *frame) int id; struct frame *f = decode_live_frame (*frame); - if (!FRAME_WINDOW_P (f)) + if (!FRAME_WINDOW_P (f) && !FRAME_INITIAL_P (f)) error ("Can't use fontsets in non-GUI frames"); XSETFRAME (*frame, f); -- cgit v1.2.3 From 0992335d128f6fc2ac1b5abc4f4106e58110a6da Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 31 Jul 2021 09:28:36 +0300 Subject: * src/fontset.c (check_fontset_name): A better fix for bug#49782. --- src/fontset.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/fontset.c') diff --git a/src/fontset.c b/src/fontset.c index d2d428da2ee..7d4bd65f70c 100644 --- a/src/fontset.c +++ b/src/fontset.c @@ -1356,15 +1356,16 @@ check_fontset_name (Lisp_Object name, Lisp_Object *frame) int id; struct frame *f = decode_live_frame (*frame); - if (!FRAME_WINDOW_P (f) && !FRAME_INITIAL_P (f)) - error ("Can't use fontsets in non-GUI frames"); - XSETFRAME (*frame, f); if (EQ (name, Qt)) return Vdefault_fontset; if (NILP (name)) - id = FRAME_FONTSET (f); + { + if (!FRAME_WINDOW_P (f)) + error ("Can't use fontsets in non-GUI frames"); + id = FRAME_FONTSET (f); + } else { CHECK_STRING (name); -- cgit v1.2.3