Skip to content

Commit d886593

Browse files
hfuruhyc
authored andcommitted
mdb_env_setup_locks: Plug mutexattr leak on error
1 parent 21ed2bd commit d886593

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

libraries/liblmdb/mdb.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4628,15 +4628,18 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
46284628
memset(env->me_txns->mti_rmutex, 0, sizeof(*env->me_txns->mti_rmutex));
46294629
memset(env->me_txns->mti_wmutex, 0, sizeof(*env->me_txns->mti_wmutex));
46304630

4631-
if ((rc = pthread_mutexattr_init(&mattr))
4632-
|| (rc = pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED))
4631+
if ((rc = pthread_mutexattr_init(&mattr)))
4632+
goto fail;
4633+
4634+
rc = pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED);
46334635
#ifdef MDB_ROBUST_SUPPORTED
4634-
|| (rc = pthread_mutexattr_setrobust(&mattr, PTHREAD_MUTEX_ROBUST))
4636+
if (!rc) rc = pthread_mutexattr_setrobust(&mattr, PTHREAD_MUTEX_ROBUST);
46354637
#endif
4636-
|| (rc = pthread_mutex_init(env->me_txns->mti_rmutex, &mattr))
4637-
|| (rc = pthread_mutex_init(env->me_txns->mti_wmutex, &mattr)))
4638-
goto fail;
4638+
if (!rc) rc = pthread_mutex_init(env->me_txns->mti_rmutex, &mattr);
4639+
if (!rc) rc = pthread_mutex_init(env->me_txns->mti_wmutex, &mattr);
46394640
pthread_mutexattr_destroy(&mattr);
4641+
if (rc)
4642+
goto fail;
46404643
#endif /* _WIN32 || MDB_USE_POSIX_SEM */
46414644

46424645
env->me_txns->mti_magic = MDB_MAGIC;

0 commit comments

Comments
 (0)