int i;  if(e == NULL) { ENGINEerr(ENGINE_F_ENGINE_FREE, ERR_R_PASSED_NULL_PARAMETER); return 0; } i = CRYPTO_add(&e->struct_ref,-1,CRYPTO_LOCK_ENGINE); engine_ref_debug(e, 0, -1) if (i > 0) return 1; #ifdef REF_CHECK if (i < 0) { fprintf(stderr,"ENGINE_free, bad structural reference count\n"); abort(); } #endif sk_ENGINE_EVP_CIPHER_pop_free(e->ciphers,ENGINE_free_engine_cipher); CRYPTO_free_ex_data(engine_ex_data_stack, e, &e->ex_data); OPENSSL_free(e); return 1;
return ENGINE_free_util(e, 1);
int ENGINE_free(ENGINE *e)	{	int i;	if(e == NULL)		{		ENGINEerr(ENGINE_F_ENGINE_FREE,			ERR_R_PASSED_NULL_PARAMETER);		return 0;		}	i = CRYPTO_add(&e->struct_ref,-1,CRYPTO_LOCK_ENGINE);	engine_ref_debug(e, 0, -1)	if (i > 0) return 1;#ifdef REF_CHECK	if (i < 0)		{		fprintf(stderr,"ENGINE_free, bad structural reference count\n");		abort();		}#endif	sk_ENGINE_EVP_CIPHER_pop_free(e->ciphers,ENGINE_free_engine_cipher);	CRYPTO_free_ex_data(engine_ex_data_stack, e, &e->ex_data);	OPENSSL_free(e);	return 1;	}