From a607799bb3ffc3cad55cd1ebdd122bff7c224ad9 Mon Sep 17 00:00:00 2001 From: krangelov Date: Tue, 26 Oct 2021 10:22:29 +0200 Subject: [PATCH] always unlock the mutex in case of failure --- src/runtime/c/pgf/ipc.cxx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/runtime/c/pgf/ipc.cxx b/src/runtime/c/pgf/ipc.cxx index 2aa14387a..bfa8881b2 100644 --- a/src/runtime/c/pgf/ipc.cxx +++ b/src/runtime/c/pgf/ipc.cxx @@ -203,12 +203,17 @@ pthread_rwlock_t *ipc_new_file_rwlock(const char* file_path) pthread_rwlockattr_t attr; if (pthread_rwlockattr_init(&attr) != 0) { + pthread_mutex_unlock(&locks->mutex); ipc_error(); } if (pthread_rwlockattr_setpshared(&attr, PTHREAD_PROCESS_SHARED) != 0) { + pthread_rwlockattr_destroy(&attr); + pthread_mutex_unlock(&locks->mutex); ipc_error(); } if (pthread_rwlock_init(&entry->rwlock, &attr) != 0) { + pthread_rwlockattr_destroy(&attr); + pthread_mutex_unlock(&locks->mutex); ipc_error(); } pthread_rwlockattr_destroy(&attr);