diff --git a/libavformat/network.c b/libavformat/network.c index e9eab297e2..57a5b418e7 100644 --- a/libavformat/network.c +++ b/libavformat/network.c @@ -77,8 +77,10 @@ int ff_tls_init(void) if (!CRYPTO_get_locking_callback()) { int i; openssl_mutexes = av_malloc_array(sizeof(pthread_mutex_t), CRYPTO_num_locks()); - if (!openssl_mutexes) + if (!openssl_mutexes) { + avpriv_unlock_avformat(); return AVERROR(ENOMEM); + } for (i = 0; i < CRYPTO_num_locks(); i++) pthread_mutex_init(&openssl_mutexes[i], NULL); CRYPTO_set_locking_callback(openssl_lock);