diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c index 6eb7a5cba..b7fec9049 100644 --- a/crypto/cryptlib.c +++ b/crypto/cryptlib.c @@ -410,17 +410,17 @@ void CRYPTO_lock(int mode, int type, const char *file, int line) #endif if (type < 0) { - struct CRYPTO_dynlock_value *pointer - = CRYPTO_get_dynlock_value(type); - - OPENSSL_assert(pointer != NULL); - - if (dynlock_lock_callback) + if (dynlock_lock_callback != NULL) { - dynlock_lock_callback(mode, pointer, file, line); - } + struct CRYPTO_dynlock_value *pointer + = CRYPTO_get_dynlock_value(type); - CRYPTO_destroy_dynlockid(type); + OPENSSL_assert(pointer != NULL); + + dynlock_lock_callback(mode, pointer, file, line); + + CRYPTO_destroy_dynlockid(type); + } } else if (locking_callback != NULL)