ret=(OBJ_NAME *)lh_insert(names_lh,(char *)onp);
ret=(OBJ_NAME *)lh_insert(names_lh,onp);
int OBJ_NAME_add(const char *name, int type, const char *data)	{	OBJ_NAME *onp,*ret;	int alias;	if ((names_lh == NULL) && !OBJ_NAME_init()) return(0);	alias=type&OBJ_NAME_ALIAS;	type&= ~OBJ_NAME_ALIAS;	onp=(OBJ_NAME *)Malloc(sizeof(OBJ_NAME));	if (onp == NULL)		{		/* ERROR */		return(0);		}	onp->name=name;	onp->alias=alias;	onp->type=type;	onp->data=data;	ret=(OBJ_NAME *)lh_insert(names_lh,(char *)onp);	if (ret != NULL)		{		/* free things */		if ((name_funcs_stack != NULL) && (sk_NAME_FUNCS_num(name_funcs_stack) > ret->type))			{			/* XXX: I'm not sure I understand why the free			 * function should get three arguments...			 * -- Richard Levitte			 */			sk_NAME_FUNCS_value(name_funcs_stack,ret->type)				->free_func(ret->name,ret->type,ret->data);			}		Free((char *)ret);		}	else		{		if (lh_error(names_lh))			{			/* ERROR */			return(0);			}		}	return(1);	}