From 77c61260df62784d795ee338250ad7980c8dfb4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Wed, 11 May 2016 12:54:47 +0200 Subject: [PATCH] px4_task_spawn_cmd: handle case properly when running out of unused taskmap items --- 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 c3a3ff47ca..15de261626 100644 --- a/src/platforms/posix/px4_layer/px4_posix_tasks.cpp +++ b/src/platforms/posix/px4_layer/px4_posix_tasks.cpp @@ -233,6 +233,13 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int } } + if (i >= PX4_MAX_TASKS) { + pthread_attr_destroy(&attr); + pthread_mutex_unlock(&task_mutex); + free(taskdata); + return -ENOSPC; + } + rv = pthread_create(&taskmap[taskid].pid, &attr, &entry_adapter, (void *) taskdata); if (rv != 0) { @@ -261,10 +268,6 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int pthread_attr_destroy(&attr); pthread_mutex_unlock(&task_mutex); - if (i >= PX4_MAX_TASKS) { - return -ENOSPC; - } - return i; }