rem: assert(WMHashInsert(scrPtr->fontCache, font->name, font)==NULL);
add: assert(WMHashInsert(scrPtr->fontSetCache, font->name, font)==NULL);
context: WMCreateFontSet(WMScreen *scrPtr, char *fontName){    WMFont *font;    Display *display = scrPtr->display;    char **missing;    int nmissing = 0;    char *defaultString;    XFontSetExtents *extents;    font = WMHashGet(scrPtr->fontCache, fontName);    if (font) {	WMRetainFont(font);	return font;    }    font = malloc(sizeof(WMFont));    if (!font)      return NULL;    memset(font, 0, sizeof(WMFont));    font->notFontSet = 0;    font->screen = scrPtr;    font->font.set = W_CreateFontSetWithGuess(display, fontName, &missing,					     &nmissing, &defaultString);    if (nmissing > 0 && font->font.set) {	int i;		wwarning(_("the following character sets are missing in %s:"),		 fontName);	for (i = 0; i < nmissing; i++) {	    wwarning(missing[i]);	}	XFreeStringList(missing);	if (defaultString)	    wwarning(_("the string \"%s\" will be used in place of any characters from those sets."),		     defaultString);    }    if (!font->font.set) {	wfree(font);	return NULL;    }        extents = XExtentsOfFontSet(font->font.set);        font->height = extents->max_logical_extent.height;    font->y = font->height - (font->height + extents->max_logical_extent.y);    font->refCount = 1;    font->name = wstrdup(fontName);    assert(WMHashInsert(scrPtr->fontCache, font->name, font)==NULL);    return font;}