xim: check for corner cases - dmenu - Dmenu fork with xft fonts.
 (HTM) git clone git://r-36.net/dmenu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 24565608cbf8572211a4a1b3fe7bbe1cf0c4fbbd
 (DIR) parent c8f0a3763843966ad480e22b18fe61ff54dc9a39
 (HTM) Author: Connor Lane Smith <cls@lubutu.com>
       Date:   Mon, 17 Oct 2011 01:18:57 +0100
       
       xim: check for corner cases
       Diffstat:
         M dmenu.c                             |      10 ++++++----
       
       1 file changed, 6 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/dmenu.c b/dmenu.c
       @@ -230,11 +230,13 @@ insert(const char *str, ssize_t n) {
        void
        keypress(XKeyEvent *ev) {
                char buf[32];
       -        KeySym ksym;
                int len;
       +        KeySym ksym = NoSymbol;
                Status status;
        
       -        len = XmbLookupString(xic, ev, buf, sizeof(buf), &ksym, &status);
       +        len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status);
       +        if(status == XBufferOverflow)
       +                return;
                if(ev->state & ControlMask) {
                        KeySym lower, upper;
        
       @@ -549,10 +551,10 @@ setup(void) {
                                    DefaultVisual(dc->dpy, screen),
                                    CWOverrideRedirect | CWBackPixmap | CWEventMask, &swa);
        
       -        /* input methods */
       +        /* input methods */
                xim = XOpenIM(dc->dpy, NULL, NULL, NULL);
                xic = XCreateIC(xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing,
       -                                        XNClientWindow, win, XNFocusWindow, win, NULL);
       +                        XNClientWindow, win, XNFocusWindow, win, NULL);
        
                XMapRaised(dc->dpy, win);
                resizedc(dc, mw, mh);