rem: if(jwl->sems != NULL) destroy_semaphores(jwl->sems);
add: if(jwl->sems != NULL){ lock_set_destroy(jwl->sems); lock_set_dealloc(jwl->sems); }
context: void xj_wlist_free(xj_wlist jwl){	int i;#ifdef XJ_EXTRA_DEBUG	DBG("XJAB:xj_wlist_free: freeing 'xj_wlist' memory ...\n");#endif	if(jwl == NULL)		return;	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->proxy != NULL)		{			_M_SHM_FREE(jwl->aliases->proxy->s);			_M_SHM_FREE(jwl->aliases->proxy);		}		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);}