URI: 
       applied Connors cleanup patch of Eckehards proposed fix of applyrules(), thanks everyone involved - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 0f1f30daca0eaf0a400fd3f8d274594c07b32a51
   DIR parent dec4850d0586f34f0dc69ed5285afefeefef90ae
  HTML Author: garbeam@gmail.com <unknown>
       Date:   Mon, 15 Aug 2011 18:44:12 +0200
       
       applied Connors cleanup patch of Eckehards proposed fix of applyrules(), thanks everyone involved
       Diffstat:
         M dwm.c                               |      40 ++++++++++++++++----------------
       
       1 file changed, 20 insertions(+), 20 deletions(-)
       ---
   DIR diff --git a/dwm.c b/dwm.c
       @@ -289,31 +289,31 @@ applyrules(Client *c) {
                unsigned int i;
                const Rule *r;
                Monitor *m;
       -        XClassHint ch = { 0 };
       +        XClassHint ch = { NULL, NULL };
        
                /* rule matching */
                c->isfloating = c->tags = 0;
       -        if(XGetClassHint(dpy, c->win, &ch)) {
       -                class = ch.res_class ? ch.res_class : broken;
       -                instance = ch.res_name ? ch.res_name : broken;
       -                for(i = 0; i < LENGTH(rules); i++) {
       -                        r = &rules[i];
       -                        if((!r->title || strstr(c->name, r->title))
       -                        && (!r->class || strstr(class, r->class))
       -                        && (!r->instance || strstr(instance, r->instance)))
       -                        {
       -                                c->isfloating = r->isfloating;
       -                                c->tags |= r->tags;
       -                                for(m = mons; m && m->num != r->monitor; m = m->next);
       -                                if(m)
       -                                        c->mon = m;
       -                        }
       +        XGetClassHint(dpy, c->win, &ch);
       +        class    = ch.res_class ? ch.res_class : broken;
       +        instance = ch.res_name  ? ch.res_name  : broken;
       +
       +        for(i = 0; i < LENGTH(rules); i++) {
       +                r = &rules[i];
       +                if((!r->title || strstr(c->name, r->title))
       +                && (!r->class || strstr(class, r->class))
       +                && (!r->instance || strstr(instance, r->instance)))
       +                {
       +                        c->isfloating = r->isfloating;
       +                        c->tags |= r->tags;
       +                        for(m = mons; m && m->num != r->monitor; m = m->next);
       +                        if(m)
       +                                c->mon = m;
                        }
       -                if(ch.res_class)
       -                        XFree(ch.res_class);
       -                if(ch.res_name)
       -                        XFree(ch.res_name);
                }
       +        if(ch.res_class)
       +                XFree(ch.res_class);
       +        if(ch.res_name)
       +                XFree(ch.res_name);
                c->tags = c->tags & TAGMASK ? c->tags & TAGMASK : c->mon->tagset[c->mon->seltags];
        }