Fix segfault on systems with broken locale support
--- dmenu.c.orig 2013-11-16 10:52:03.970786705 -0300
+++ dmenu.c 2013-11-18 16:07:45.422148846 -0300
@@ -5,6 +5,7 @@
#include <string.h>
#include <strings.h>
#include <unistd.h>
+#include <locale.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
@@ -590,7 +591,13 @@
CWOverrideRedirect | CWBackPixel | CWEventMask, &swa);
/* open input methods */
- xim = XOpenIM(dc->dpy, NULL, NULL, NULL);
+ if (!(xim = XOpenIM(dc->dpy, NULL, NULL, NULL))) {
+ fputs("dmenu: Failed to open input method\n", stderr);
+ /* Might be an issue with the locale */
+ setlocale(LC_ALL, "C");
+ if (!(xim = XOpenIM(dc->dpy, NULL, NULL, NULL)))
+ exit(1);
+ }
xic = XCreateIC(xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing,
XNClientWindow, win, XNFocusWindow, win, NULL);