"ssl_sess_cert",
"ssl",
"rand",
+ "rand2",
"debug_malloc",
"BIO",
"gethostbyname",
"debug_malloc2",
"dso",
"dynlock",
-#if CRYPTO_NUM_LOCKS != 28
+#if CRYPTO_NUM_LOCKS != 29
# error "Inconsistency between crypto.h and cryptlib.c"
#endif
};
CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
if (dyn_locks == NULL || i >= sk_CRYPTO_dynlock_num(dyn_locks))
+ {
+ CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
return;
+ }
pointer = sk_CRYPTO_dynlock_value(dyn_locks, i);
if (pointer != NULL)
{
}
else
#endif
- if (--(pointer->references) <= 0)
+ if (pointer->references <= 0)
{
sk_CRYPTO_dynlock_set(dyn_locks, i, NULL);
}
struct CRYPTO_dynlock_value *pointer
= CRYPTO_get_dynlock_value(i);
- if (pointer)
+ if (pointer && dynlock_lock_callback)
{
dynlock_lock_callback(mode, pointer, file, line);
}
CRYPTO_get_lock_name(type),
file,line);
#endif
- *pointer=ret;
}
else
{