if (length > sizeof(c->current.pattern)) goto badAlloc;
StartListFontsWithInfo(client, length, pattern, max_names)    ClientPtr   client;    int         length;    unsigned char       *pattern;    int         max_names;{    int		    i;    LFWIclosurePtr  c;    if (!(c = (LFWIclosurePtr) xalloc(sizeof *c)))	goto badAlloc;    c->fpe_list = (FontPathElementPtr *)	xalloc(sizeof(FontPathElementPtr) * num_fpes);    if (!c->fpe_list)    {	xfree(c);	goto badAlloc;    }    memmove(c->current.pattern, pattern, length);    for (i = 0; i < num_fpes; i++)    {	c->fpe_list[i] = font_path_elements[i];	UseFPE(c->fpe_list[i]);    }    c->client = client;    c->num_fpes = num_fpes;    c->reply = 0;    c->length = 0;    c->current.patlen = length;    c->current.current_fpe = 0;    c->current.max_names = max_names;    c->current.list_started = FALSE;    c->current.private = 0;    c->savedNumFonts = 0;    c->haveSaved = FALSE;    c->slept = FALSE;    doListFontsWithInfo(client, c);    return Success;badAlloc:    return BadAlloc;}