Index: trunk/Ohana/src/opihi/lib.shell/command.c
===================================================================
--- trunk/Ohana/src/opihi/lib.shell/command.c	(revision 4462)
+++ trunk/Ohana/src/opihi/lib.shell/command.c	(revision 4470)
@@ -5,5 +5,5 @@
 
   int i, status, argc;
-  char **argv;
+  char **argv, **targv;
   Command *cmd;
 
@@ -29,4 +29,8 @@
   if (argc == 0) return (TRUE);  /* empty command or assignment */
 
+  /* save the original values of argv since command may modify the array */
+  ALLOCATE (targv, char *, argc);
+  for (i = 0; i < argc; i++) targv[i] = argv[i];
+
   cmd = MatchCommand (argv[0], TRUE, FALSE);
   if (cmd == NULL) {
@@ -35,7 +39,9 @@
     free (argv[0]);
     argv[0] = strcreate (cmd[0].name);
+    targv[0] = argv[0];
     status = (*cmd[0].func) (argc, argv);
   }
-  for (i = 0; i < argc; i++) free (argv[i]);
+  for (i = 0; i < argc; i++) free (targv[i]);
+  free (targv);
   free (argv);
 
