rem: XFREE(alout.prev->word) XFREE( (tchar *)alout.prev)
add: xfree(alout.prev->word); xfree(alout.prev);
context: asyn3(struct wordent *p1, struct wordent *p2){	struct varent *ap;	struct wordent alout;	bool redid;#ifdef TRACE	tprintf("TRACE- asyn3()\n");#endif	if (p1 == p2)		return;	if (p1->word[0] == '(') {		for (p2 = p2->prev; p2->word[0] != ')'; p2 = p2->prev)			if (p2 == p1)				return;		if (p2 == p1->next)			return;		asyn0(p1->next, p2);		return;	}	ap = adrof1(p1->word, &aliases);	if (ap == 0)		return;	alhistp = p1->prev;	alhistt = p2;	alvec = ap->vec;	redid = lex(&alout);	alhistp = alhistt = 0;	alvec = 0;	if (err) {		freelex(&alout);		error("%s", gettext(err));	}	if (p1->word[0] && eq(p1->word, alout.next->word)) {		tchar *cp = alout.next->word;		alout.next->word = strspl(S_TOPBIT /*"\200"*/, cp);		XFREE(cp)	}	p1 = freenod(p1, redid ? p2 : p1->next);	if (alout.next != &alout) {		p1->next->prev = alout.prev->prev;		alout.prev->prev->next = p1->next;		alout.next->prev = p1;		p1->next = alout.next;		XFREE(alout.prev->word)		XFREE( (tchar *)alout.prev)	}	reset();		/* throw! */}