old : (LYImageMap *)calloc(1, sizeof(LYImageMap));
old : typecalloc(LYImageMap);
PUBLIC BOOL LYAddImageMap ARGS3(	char *, 	address,	char *, 	title,	HTParentAnchor *, node_anchor){    LYImageMap *new = NULL;    LYImageMap *old = NULL;    HTList *cur = NULL;    HTList *theList = NULL;    HTList *curele = NULL;    LYMapElement *ele = NULL;    if (!(address && *address))	return FALSE;    if (!(node_anchor && node_anchor->address))	return FALSE;    /*     *	Set theList to either the global LynxMaps list or, if we     *	are associated with post data, the specific list.  The     *	list is created if it doesn't already exist. - kw     */#ifndef DONT_TRACK_INTERNAL_LINKS    if (node_anchor->post_data) {	/*	 *  We are handling a MAP element found while parsing	 *  node_anchor's stream of data, and node_anchor has	 *  post_data associated and should therefore represent	 *  a POST response, so use the specific list. - kw	 */	theList = node_anchor->imaps;	if (!theList) {	    theList = node_anchor->imaps = HTList_new();	}    } else#endif    {	if (!LynxMaps) {	    LynxMaps = HTList_new();#ifdef LY_FIND_LEAKS	    atexit(LYLynxMaps_free);#endif	}	theList = LynxMaps;    }    if (theList) {	cur = theList;	while (NULL != (old = (LYImageMap *)HTList_nextObject(cur))) {	    if (old->address == 0)	/* shouldn't happen */	    	continue;	    if (!strcmp(old->address, address)) {		FREE(old->address);		FREE(old->title);		if (old->elements) {		    curele = old->elements;		    while (NULL !=			   (ele = (LYMapElement *)HTList_nextObject(curele))) {			FREE(ele->address);			FREE(ele->title);			FREE(ele);		    }		    HTList_delete(old->elements);		    old->elements = NULL;		}		break;	    }	}    }    new = (old != NULL) ?		    old : (LYImageMap *)calloc(1, sizeof(LYImageMap));    if (new == NULL) {	outofmem(__FILE__, "LYAddImageMap");	return FALSE;    }    StrAllocCopy(new->address, address);    if (title && *title)	StrAllocCopy(new->title, title);    if (new != old)	HTList_addObject(theList, new);    return TRUE;}