From 05ed021e3cb4fba02dfd6457e0c2a55e4555900d Mon Sep 17 00:00:00 2001 From: Hiltjo Posthuma Date: Tue, 12 Feb 2019 19:10:43 +0100 Subject: [PATCH] fix crash when XOpenIM returns NULL for example when IME variables are set, but the program is not started (yet). --- dmenubar/dmenu.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/dmenubar/dmenu.c b/dmenubar/dmenu.c index f803149..ae56f4f 100644 --- a/dmenubar/dmenu.c +++ b/dmenubar/dmenu.c @@ -664,8 +664,17 @@ setup(void) CWOverrideRedirect | CWBackPixel | CWEventMask, &swa); XSetClassHint(dpy, win, &ch); - /* open input methods */ - xim = XOpenIM(dpy, NULL, NULL, NULL); + + /* input methods */ + if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) { + XSetLocaleModifiers("@im=local"); + if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) { + XSetLocaleModifiers("@im="); + if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) + die("XOpenIM failed. Could not open input device.\n"); + } + } + xic = XCreateIC(xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, XNClientWindow, win, XNFocusWindow, win, NULL);