commit f5036b90efd9423d805923a0bc73cd54e30e72ab
Author:     Hiltjo Posthuma <hil...@codemadness.org>
AuthorDate: Tue Feb 12 19:10:43 2019 +0100
Commit:     Hiltjo Posthuma <hil...@codemadness.org>
CommitDate: Tue Feb 12 19:10:43 2019 +0100

    fix crash when XOpenIM returns NULL
    
    for example when IME variables are set, but the program is not started 
(yet).

diff --git a/dmenu.c b/dmenu.c
index f803149..ae56f4f 100644
--- a/dmenu.c
+++ b/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);
 

Reply via email to