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; }