From 0066db82f921ad84a9017242396e37259f3d71f4 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sun, 3 Feb 2013 13:48:20 +0000 Subject: NSH needs to call pthread_detach() to avoid memory leak git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5601 42af7a65-404d-4744-a932-0658087f49c3 --- apps/ChangeLog.txt | 2 ++ apps/nshlib/nsh_parse.c | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) (limited to 'apps') diff --git a/apps/ChangeLog.txt b/apps/ChangeLog.txt index d9a42fe73..abeab4a5c 100644 --- a/apps/ChangeLog.txt +++ b/apps/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/apps/nshlib/nsh_parse.c b/apps/nshlib/nsh_parse.c index 26b41e89b..4ee86b4cc 100644 --- a/apps/nshlib/nsh_parse.c +++ b/apps/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 -- cgit v1.2.3