while (1) {
while (*num < sizeof(plist) / sizeof(plist[0])) {
_XParseBaseFontNameList(str, num)    char           *str;    int            *num;{    char           *plist[MAXLIST];    char          **list;    char           *ptr;    *num = 0;    if (!str || !*str) {	return (char **)NULL;    }    while (*str && isspace(*str))	str++;    if (!*str)	return (char **)NULL;    if (!(ptr = Xmalloc((unsigned)strlen(str) + 1))) {	return (char **)NULL;    }    strcpy(ptr, str);    while (1) {	char	*back;	plist[*num] = ptr;	if ((ptr = strchr(ptr, ','))) {	    back = ptr;	} else {	    back = plist[*num] + strlen(plist[*num]);	}	while (isspace(*(back - 1)))	    back--;	*back = '\0';	(*num)++;	if (!ptr)	    break;	ptr++;	while (*ptr && isspace(*ptr))	    ptr++;	if (!*ptr)	    break;    }    if (!(list = (char **) Xmalloc((unsigned)sizeof(char *) * (*num + 1)))) {	Xfree(ptr);	return (char **)NULL;    }    memcpy((char *)list, (char *)plist, sizeof(char *) * (*num));    *(list + *num) = NULL;    return list;}