rem: free(tmp);
add: wfree(tmp);
context: WMDeleteSelectionHandler(WMWidget *widget, Atom selection){    SelectionHandler *handler, *tmp;    Display *dpy = WMWidgetScreen(widget)->display;    Window win = WMWidgetXID(widget);    Time timestamp;    if (!selHandlers)        return;    tmp = selHandlers;    if (tmp->widget == widget) {	if (tmp->flags.done_pending) {	    tmp->flags.delete_pending = 1;	    return;	}        selHandlers = tmp->next;	timestamp = tmp->timestamp;        free(tmp);    } else {        while (tmp->next) {            if (tmp->next->widget == widget) {		if (tmp->next->flags.done_pending) {		    tmp->next->flags.delete_pending = 1;		    return;		}                handler = tmp->next;                tmp->next = handler->next;		timestamp = handler->timestamp;                free(handler);                break;            }            tmp = tmp->next;        }    }    XGrabServer(dpy);    if (XGetSelectionOwner(dpy, selection) == win) {	XSetSelectionOwner(dpy, selection, None, timestamp);    }    XUngrabServer(dpy);}