From 26feb018d904c6062d9d5e7e0522e55a25cce8c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Thu, 26 May 2016 07:37:55 +0200 Subject: [PATCH] getprogname on posix: fix locking (mutex was not unlocked in some cases) --- src/platforms/posix/px4_layer/px4_posix_tasks.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/platforms/posix/px4_layer/px4_posix_tasks.cpp b/src/platforms/posix/px4_layer/px4_posix_tasks.cpp index 9b3730c7b9..ffcd74f5e1 100644 --- a/src/platforms/posix/px4_layer/px4_posix_tasks.cpp +++ b/src/platforms/posix/px4_layer/px4_posix_tasks.cpp @@ -391,16 +391,19 @@ unsigned long px4_getpid() const char *getprogname() { pthread_t pid = pthread_self(); + const char *prog_name = "UnknownApp"; + + pthread_mutex_lock(&task_mutex); for (int i = 0; i < PX4_MAX_TASKS; i++) { if (taskmap[i].isused && taskmap[i].pid == pid) { - pthread_mutex_lock(&task_mutex); - return taskmap[i].name.c_str(); - pthread_mutex_unlock(&task_mutex); + prog_name = taskmap[i].name.c_str(); } } - return "Unknown App"; + pthread_mutex_unlock(&task_mutex); + + return prog_name; } int px4_prctl(int option, const char *arg2, unsigned pid)