diff --git a/ChangeLog.txt b/ChangeLog.txt index d9a42fe73..abeab4a5c 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -511,4 +511,6 @@ * apps/builtin/exec_builtin.c: Now uses task_spawn() to start builtin applications. * Type of argv has changed from const char ** to char * const * + * apps/nshlib/nsh_parse.c: Fix memory lead: Need to detach after + creating a pthread. diff --git a/nshlib/nsh_parse.c b/nshlib/nsh_parse.c index 26b41e89b..4ee86b4cc 100644 --- a/nshlib/nsh_parse.c +++ b/nshlib/nsh_parse.c @@ -1426,8 +1426,10 @@ int nsh_parse(FAR struct nsh_vtbl_s *vtbl, char *cmdline) /* Free the redirected output file path */ - nsh_freefullpath(redirfile); - redirfile = NULL; + if (redirfile) + { + nsh_freefullpath(redirfile); + } /* Save the result: success if 0; failure if 1 */ @@ -1467,8 +1469,10 @@ int nsh_parse(FAR struct nsh_vtbl_s *vtbl, char *cmdline) /* Free the redirected output file path */ - nsh_freefullpath(redirfile); - redirfile = NULL; + if (redirfile) + { + nsh_freefullpath(redirfile); + } /* Save the result: success if 0; failure if 1 */ @@ -1596,6 +1600,12 @@ int nsh_parse(FAR struct nsh_vtbl_s *vtbl, char *cmdline) goto errout; } + /* Detach from the pthread since we are not going to join with it. + * Otherwise, we would have a memory leak. + */ + + (void)pthread_detach(thread); + nsh_output(vtbl, "%s [%d:%d]\n", cmd, thread, param.sched_priority); } else