xim: check for corner cases 24565608
Connor Lane Smith · 2011-10-17 01:18 1 file(s) · +6 −4
dmenu.c +6 −4
230 230
void
231 231
keypress(XKeyEvent *ev) {
232 232
	char buf[32];
233 -
	KeySym ksym;
234 233
	int len;
234 +
	KeySym ksym = NoSymbol;
235 235
	Status status;
236 236
237 -
	len = XmbLookupString(xic, ev, buf, sizeof(buf), &ksym, &status);
237 +
	len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status);
238 +
	if(status == XBufferOverflow)
239 +
		return;
238 240
	if(ev->state & ControlMask) {
239 241
		KeySym lower, upper;
240 242
549 551
	                    DefaultVisual(dc->dpy, screen),
550 552
	                    CWOverrideRedirect | CWBackPixmap | CWEventMask, &swa);
551 553
552 -
        /* input methods */
554 +
	/* input methods */
553 555
	xim = XOpenIM(dc->dpy, NULL, NULL, NULL);
554 556
	xic = XCreateIC(xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing,
555 -
					XNClientWindow, win, XNFocusWindow, win, NULL);
557 +
	                XNClientWindow, win, XNFocusWindow, win, NULL);
556 558
557 559
	XMapRaised(dc->dpy, win);
558 560
	resizedc(dc, mw, mh);