free((Address)s->pref);
free(s->pref);
SuffRemoveSrc (l)    Lst l;{    LstNode ln;    Src *s;    int t = 0;    if (Lst_Open (l) == FAILURE) {	return 0;    }#ifdef DEBUG_SRC    printf("cleaning %lx: ", (unsigned long) l);    Lst_Every(l, PrintAddr);    printf("\n");#endif    while ((ln = Lst_Next (l)) != NULL) {	s = (Src *) Lst_Datum (ln);	if (s->children == 0) {	    free ((Address)s->file);	    if (!s->parent)		free((Address)s->pref);	    else {#ifdef DEBUG_SRC		LstNode ln = Lst_Member(s->parent->cp, s);		if (ln != NULL)		    Lst_Remove(s->parent->cp, ln);#endif		--s->parent->children;	    }#ifdef DEBUG_SRC	    printf("free: [l=%x] p=%x %d\n", l, s, s->children);	    Lst_Destroy(s->cp, NOFREE);#endif	    Lst_Remove(l, ln);	    free ((Address)s);	    t |= 1;	    Lst_Close(l);	    return TRUE;	}#ifdef DEBUG_SRC	else {	    printf("keep: [l=%x] p=%x %d: ", l, s, s->children);	    Lst_Every(s->cp, PrintAddr);	    printf("\n");	}#endif    }    Lst_Close(l);    return t;}