if (temp == NULL) _XtAllocError(NULL);
static String ParseParamSeq(str, paramSeqP, paramNumP)    register String str;    String **paramSeqP;    Cardinal *paramNumP;{    typedef struct _ParamRec *ParamPtr;    typedef struct _ParamRec {	ParamPtr next;	String	param;    } ParamRec;    ParamPtr params = NULL;    register Cardinal num_params = 0;    register Cardinal i;    ScanWhitespace(str);    while (*str != ')' && *str != '\0' && !IsNewline(*str)) {	String newStr;	str = ParseString(str, &newStr);	if (newStr != NULL) {	    ParamPtr temp = (ParamRec*)		ALLOCATE_LOCAL( (unsigned)sizeof(ParamRec) );	    num_params++;	    temp->next = params;	    params = temp;	    temp->param = newStr;	    ScanWhitespace(str);	    if (*str == ',') {		str++;		ScanWhitespace(str);	    }	}    }    if (num_params != 0) {	String *paramP = (String *)		__XtMalloc( (unsigned)(num_params+1) * sizeof(String) );	*paramSeqP = paramP;	*paramNumP = num_params;	paramP += num_params; /* list is LIFO right now */	*paramP-- = NULL;	for (i=0; i < num_params; i++) {	    ParamPtr next = params->next;	    *paramP-- = params->param;	    DEALLOCATE_LOCAL( (char *)params );	    params = next;	}    } else {	*paramSeqP = NULL;	*paramNumP = 0;    }    return str;}