summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo Prikler <leo.prikler@student.tugraz.at>2020-08-02 20:46:58 +0200
committerMathieu Othacehe <othacehe@gnu.org>2020-08-03 12:26:02 +0200
commitf574f859ee7343d894ecf7318fa53b7a73426775 (patch)
treec15e4f6da7add170970ee2168946611078fe7eed
parent87194d5783c1848b44a0596432cb66940d7874d2 (diff)
gnu: emacs: Ignore empty XIM styles.
As of libx11 version 1.6.10, xim may be NULL, which causes a segmentation fault in the execution of ARRAYELTS. As a cautionary measure, we short-circuit this logic. * gnu/packages/patches/emacs-ignore-empty-xim-styles.patch: New file. * gnu/packages/emacs.scm (emacs emacs-next)[patches]: Use it. * gnu/local.mk: Register it. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/emacs.scm2
-rw-r--r--gnu/packages/patches/emacs-ignore-empty-xim-styles.patch24
3 files changed, 27 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index f1a6c6a0d0..8be9bac67c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -917,6 +917,7 @@ dist_patch_DATA = \
%D%/packages/patches/emacs-exec-path.patch \
%D%/packages/patches/emacs-exwm-fix-fullscreen-states.patch \
%D%/packages/patches/emacs-fix-scheme-indent-function.patch \
+ %D%/packages/patches/emacs-ignore-empty-xim-styles.patch \
%D%/packages/patches/emacs-json-reformat-fix-tests.patch \
%D%/packages/patches/emacs-highlight-stages-add-gexp.patch \
%D%/packages/patches/emacs-hyperbole-toggle-messaging.patch \
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 8fe5750791..ad8d4b0606 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -85,6 +85,7 @@
"119ldpk7sgn9jlpyngv5y4z3i7bb8q3xp4p0qqi7i5nq39syd42d"))
(patches (search-patches "emacs-exec-path.patch"
"emacs-fix-scheme-indent-function.patch"
+ "emacs-ignore-empty-xim-styles.patch"
"emacs-source-date-epoch.patch"))
(modules '((guix build utils)))
(snippet
@@ -261,6 +262,7 @@ languages.")
(file-name (git-file-name name version))
(patches (search-patches "emacs27-exec-path.patch"
"emacs-fix-scheme-indent-function.patch"
+ "emacs-ignore-empty-xim-styles.patch"
"emacs-source-date-epoch.patch"))
(modules (origin-modules (package-source emacs)))
;; TODO: once the snippet for `emacs' is changed to not fail when
diff --git a/gnu/packages/patches/emacs-ignore-empty-xim-styles.patch b/gnu/packages/patches/emacs-ignore-empty-xim-styles.patch
new file mode 100644
index 0000000000..606d3ece6f
--- /dev/null
+++ b/gnu/packages/patches/emacs-ignore-empty-xim-styles.patch
@@ -0,0 +1,24 @@
+Fix contributed upstream here:
+https://debbugs.gnu.org/cgi/bugreport.cgi?bug=42694.
+
+Index: emacs-26.3/src/xfns.c
+===================================================================
+--- emacs-26.3.orig/src/xfns.c
++++ emacs-26.3/src/xfns.c
+@@ -2533,6 +2533,8 @@ xic_free_xfontset (struct frame *f)
+ static XIMStyle
+ best_xim_style (XIMStyles *xim)
+ {
++ if (xim == NULL) goto out;
++
+ int i, j;
+ int nr_supported = ARRAYELTS (supported_xim_styles);
+
+@@ -2541,6 +2543,7 @@ best_xim_style (XIMStyles *xim)
+ if (supported_xim_styles[i] == xim->supported_styles[j])
+ return supported_xim_styles[i];
+
++ out:
+ /* Return the default style. */
+ return XIMPreeditNothing | XIMStatusNothing;
+ }