26
26
27
27
#include <nuttx/config.h>
28
28
29
+ #include <stdio.h>
29
30
#include <string.h>
30
31
31
32
#include "nsh.h"
@@ -58,18 +59,29 @@ int cmd_free(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
58
59
59
60
int cmd_memdump (FAR struct nsh_vtbl_s * vtbl , int argc , FAR char * * argv )
60
61
{
61
- char arg [LINE_MAX ] = "" ;
62
+ FAR char * arg ;
63
+ int ret ;
62
64
int i ;
63
65
66
+ arg = lib_get_tempbuffer (LINE_MAX );
67
+ if (arg == NULL )
68
+ {
69
+ return - ENOMEM ;
70
+ }
71
+
72
+ arg [0 ] = '\0' ;
73
+
64
74
if (argc == 1 )
65
75
{
66
76
strlcpy (arg , "used" , LINE_MAX );
67
77
}
68
78
else if (argc >= 2 && (strcmp (argv [1 ], "-h" ) == 0 ||
69
79
strcmp (argv [1 ], "help" ) == 0 ))
70
80
{
71
- return nsh_catfile (vtbl , argv [0 ],
72
- CONFIG_NSH_PROC_MOUNTPOINT "/memdump" );
81
+ ret = nsh_catfile (vtbl , argv [0 ],
82
+ CONFIG_NSH_PROC_MOUNTPOINT "/memdump" );
83
+ lib_put_tempbuffer (arg );
84
+ return ret ;
73
85
}
74
86
else
75
87
{
@@ -83,8 +95,10 @@ int cmd_memdump(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
83
95
}
84
96
}
85
97
86
- return nsh_writefile (vtbl , argv [0 ], arg , strlen (arg ),
87
- CONFIG_NSH_PROC_MOUNTPOINT "/memdump" );
98
+ ret = nsh_writefile (vtbl , argv [0 ], arg , strlen (arg ),
99
+ CONFIG_NSH_PROC_MOUNTPOINT "/memdump" );
100
+ lib_put_tempbuffer (arg );
101
+ return ret ;
88
102
}
89
103
90
104
#endif /* !CONFIG_NSH_DISABLE_MEMDUMP && NSH_HAVE_WRITEFILE */
0 commit comments