By the way, why applyrules sets tags and isfloating to 0 before applying rules? It is already done by calloc() in manage(). And it doesn't set c->mon to NULL, so I think we can just remove all initialization.
Code cleanup patch: diff -r b46ae56abe65 dwm.c --- a/dwm.c Wed Jul 27 19:59:10 2011 +0200 +++ b/dwm.c Fri Jul 29 16:44:57 2011 +0300 @@ -292,7 +292,6 @@ XClassHint ch = { 0 }; /* 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;