diff options
author | Hiltjo Posthuma <hiltjo@codemadness.org> | 2019-02-12 19:10:43 +0100 |
---|---|---|
committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2019-02-12 19:10:43 +0100 |
commit | f5036b90efd9423d805923a0bc73cd54e30e72ab (patch) | |
tree | f4749d145a5296546aa98e041f9c0fbb501a4f60 | |
parent | 153aaf88bf9bf5c6c4b118bd871f8cf1eafdcab5 (diff) | |
download | dmenu-f5036b90efd9423d805923a0bc73cd54e30e72ab.tar.gz dmenu-f5036b90efd9423d805923a0bc73cd54e30e72ab.tar.bz2 dmenu-f5036b90efd9423d805923a0bc73cd54e30e72ab.zip |
fix crash when XOpenIM returns NULL
for example when IME variables are set, but the program is not started (yet).
-rw-r--r-- | dmenu.c | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -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); |