ENGINEerr(ENGINE_F_SET_DATA_CTX,ERR_R_MALLOC_FAILURE);
ENGINEerr(ENGINE_F_DYNAMIC_SET_DATA_CTX,ERR_R_MALLOC_FAILURE);
static int dynamic_set_data_ctx(ENGINE *e, dynamic_data_ctx **ctx)	{	dynamic_data_ctx *c;	c = OPENSSL_malloc(sizeof(dynamic_data_ctx));	if(!c)		{		ENGINEerr(ENGINE_F_SET_DATA_CTX,ERR_R_MALLOC_FAILURE);		return 0;		}	memset(c, 0, sizeof(dynamic_data_ctx));	c->dynamic_dso = NULL;	c->v_check = NULL;	c->bind_engine = NULL;	c->DYNAMIC_LIBNAME = NULL;	c->no_vcheck = 0;	c->engine_id = NULL;	c->list_add_value = 0;	c->DYNAMIC_F1 = "v_check";	c->DYNAMIC_F2 = "bind_engine";	c->dir_load = 1;	c->dirs = sk_new_null();	if(!c->dirs)		{		ENGINEerr(ENGINE_F_SET_DATA_CTX,ERR_R_MALLOC_FAILURE);		OPENSSL_free(c);		return 0;		}	CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);	if((*ctx = (dynamic_data_ctx *)ENGINE_get_ex_data(e,				dynamic_ex_data_idx)) == NULL)		{		/* Good, we're the first */		ENGINE_set_ex_data(e, dynamic_ex_data_idx, c);		*ctx = c;		c = NULL;		}	CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);	/* If we lost the race to set the context, c is non-NULL and *ctx is the	 * context of the thread that won. */	if(c)		OPENSSL_free(c);	return 1;	}