This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git


The following commit(s) were added to refs/heads/master by this push:
     new 339eeaa08 Use lib_get_tempbuffer Saving stack
339eeaa08 is described below

commit 339eeaa087efcd24d64235f0c4f0f2267e6b0b2f
Author: zhangshoukui <zhangshou...@xiaomi.com>
AuthorDate: Thu Dec 12 17:10:01 2024 +0800

    Use lib_get_tempbuffer Saving stack
    
    Signed-off-by: zhangshoukui <zhangshou...@xiaomi.com>
---
 nshlib/nsh_mmcmds.c | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/nshlib/nsh_mmcmds.c b/nshlib/nsh_mmcmds.c
index 81427a00b..9cbd01ce0 100644
--- a/nshlib/nsh_mmcmds.c
+++ b/nshlib/nsh_mmcmds.c
@@ -26,6 +26,7 @@
 
 #include <nuttx/config.h>
 
+#include <stdio.h>
 #include <string.h>
 
 #include "nsh.h"
@@ -58,9 +59,18 @@ int cmd_free(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char 
**argv)
 
 int cmd_memdump(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
 {
-  char arg[LINE_MAX] = "";
+  FAR char *arg;
+  int ret;
   int i;
 
+  arg = lib_get_tempbuffer(LINE_MAX);
+  if (arg == NULL)
+    {
+      return -ENOMEM;
+    }
+
+  arg[0] = '\0';
+
   if (argc == 1)
     {
       strlcpy(arg, "used", LINE_MAX);
@@ -68,8 +78,10 @@ int cmd_memdump(FAR struct nsh_vtbl_s *vtbl, int argc, FAR 
char **argv)
   else if (argc >= 2 && (strcmp(argv[1], "-h") == 0 ||
                          strcmp(argv[1], "help") == 0))
     {
-      return nsh_catfile(vtbl, argv[0],
-                         CONFIG_NSH_PROC_MOUNTPOINT "/memdump");
+      ret = nsh_catfile(vtbl, argv[0],
+                        CONFIG_NSH_PROC_MOUNTPOINT "/memdump");
+      lib_put_tempbuffer(arg);
+      return ret;
     }
   else
     {
@@ -83,8 +95,10 @@ int cmd_memdump(FAR struct nsh_vtbl_s *vtbl, int argc, FAR 
char **argv)
         }
     }
 
-  return nsh_writefile(vtbl, argv[0], arg, strlen(arg),
-                       CONFIG_NSH_PROC_MOUNTPOINT "/memdump");
+  ret = nsh_writefile(vtbl, argv[0], arg, strlen(arg),
+                      CONFIG_NSH_PROC_MOUNTPOINT "/memdump");
+  lib_put_tempbuffer(arg);
+  return ret;
 }
 
 #endif /* !CONFIG_NSH_DISABLE_MEMDUMP && NSH_HAVE_WRITEFILE */

Reply via email to