aop=(ADDED_OBJ *)lh_insert(added,(char *)ao[i]);
aop=(ADDED_OBJ *)lh_insert(added,ao[i]);
int OBJ_add_object(ASN1_OBJECT *obj)	{	ASN1_OBJECT *o;	ADDED_OBJ *ao[4]={NULL,NULL,NULL,NULL},*aop;	int i;	if (added == NULL)		if (!init_added()) return(0);	if ((o=OBJ_dup(obj)) == NULL) goto err;	ao[ADDED_NID]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));	if ((o->length != 0) && (obj->data != NULL))		ao[ADDED_DATA]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));	if (o->sn != NULL)		ao[ADDED_SNAME]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));	if (o->ln != NULL)		ao[ADDED_LNAME]=(ADDED_OBJ *)Malloc(sizeof(ADDED_OBJ));	for (i=ADDED_DATA; i<=ADDED_NID; i++)		{		if (ao[i] != NULL)			{			ao[i]->type=i;			ao[i]->obj=o;			aop=(ADDED_OBJ *)lh_insert(added,(char *)ao[i]);			/* memory leak, buit should not normally matter */			if (aop != NULL)				Free(aop);			}		}	o->flags&= ~(ASN1_OBJECT_FLAG_DYNAMIC|ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|			ASN1_OBJECT_FLAG_DYNAMIC_DATA);	return(o->nid);err:	for (i=ADDED_DATA; i<=ADDED_NID; i++)		if (ao[i] != NULL) Free(ao[i]);	if (o != NULL) Free(o);	return(NID_undef);	}