rem: if(jwl->contact_h != NULL && jwl->contact_h->s != NULL) _M_SHM_FREE(jwl->contact_h->s); if(jwl->contact_h != NULL) _M_SHM_FREE(jwl->contact_h);
context: void xj_wlist_free(xj_wlist jwl){	int i;	DBG("XJAB:xj_wlist_free: freeing 'xj_wlist' memory ...\n");	if(jwl == NULL)		return;	if(jwl->contact_h != NULL && jwl->contact_h->s != NULL)		_M_SHM_FREE(jwl->contact_h->s);	if(jwl->contact_h != NULL)		_M_SHM_FREE(jwl->contact_h);	if(jwl->workers != NULL)	{		for(i=0; i<jwl->len; i++)			free2tree234(jwl->workers[i].sip_ids, xj_jkey_free_p);		_M_SHM_FREE(jwl->workers);	}	if(jwl->aliases != NULL)	{		if(jwl->aliases->d)			_M_SHM_FREE(jwl->aliases->d);		if(jwl->aliases->jdm != NULL)		{			_M_SHM_FREE(jwl->aliases->jdm->s);			_M_SHM_FREE(jwl->aliases->jdm);		}		if(jwl->aliases->size > 0)		{			for(i=0; i<jwl->aliases->size; i++)				_M_SHM_FREE(jwl->aliases->a[i].s);			_M_SHM_FREE(jwl->aliases->a);		}		_M_SHM_FREE(jwl->aliases);		jwl->aliases = NULL;	}		//rm_sem(jwl->semid);	if(jwl->sems != NULL)		destroy_semaphores(jwl->sems);		_M_SHM_FREE(jwl);}