mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-01 04:44:07 +08:00
fix px4_task_spawn_cmd: memory leak, if one of the pthread_* calls fails
This commit is contained in:
parent
c942266aa6
commit
99a682e7a7
@ -170,6 +170,7 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
|
||||
|
||||
if (rv != 0) {
|
||||
PX4_WARN("px4_task_spawn_cmd: failed to init thread attrs");
|
||||
free(taskdata);
|
||||
return (rv < 0) ? rv : -rv;
|
||||
}
|
||||
|
||||
@ -183,6 +184,7 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
|
||||
|
||||
if (rv != 0) {
|
||||
PX4_ERR("pthread_attr_setstacksize to %d returned error (%d)", stack_size, rv);
|
||||
free(taskdata);
|
||||
return (rv < 0) ? rv : -rv;
|
||||
}
|
||||
|
||||
@ -192,6 +194,7 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
|
||||
|
||||
if (rv != 0) {
|
||||
PX4_WARN("px4_task_spawn_cmd: failed to set inherit sched");
|
||||
free(taskdata);
|
||||
return (rv < 0) ? rv : -rv;
|
||||
}
|
||||
|
||||
@ -199,6 +202,7 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
|
||||
|
||||
if (rv != 0) {
|
||||
PX4_WARN("px4_task_spawn_cmd: failed to set sched policy");
|
||||
free(taskdata);
|
||||
return (rv < 0) ? rv : -rv;
|
||||
}
|
||||
|
||||
@ -208,6 +212,7 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
|
||||
|
||||
if (rv != 0) {
|
||||
PX4_WARN("px4_task_spawn_cmd: failed to set sched param");
|
||||
free(taskdata);
|
||||
return (rv < 0) ? rv : -rv;
|
||||
}
|
||||
|
||||
@ -235,10 +240,12 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
|
||||
if (rv != 0) {
|
||||
PX4_ERR("px4_task_spawn_cmd: failed to create thread %d %d\n", rv, errno);
|
||||
taskmap[taskid].isused = false;
|
||||
free(taskdata);
|
||||
return (rv < 0) ? rv : -rv;
|
||||
}
|
||||
|
||||
} else {
|
||||
free(taskdata);
|
||||
return (rv < 0) ? rv : -rv;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user