* infcmd.c (construct_inferior_arguments): Handle empty arguments.
authorAndreas Schwab <schwab@linux-m68k.org>
Tue, 3 Dec 2002 12:25:11 +0000 (12:25 +0000)
committerAndreas Schwab <schwab@linux-m68k.org>
Tue, 3 Dec 2002 12:25:11 +0000 (12:25 +0000)
gdb/ChangeLog
gdb/infcmd.c

index 2e9ec72126d561721d370cee6f5b4f30df702ff2..b740a6c18366ea401e6d9c3281b9e3b47300b68d 100644 (file)
@@ -1,3 +1,7 @@
+2002-12-03  Andreas Schwab  <schwab@suse.de>
+
+       * infcmd.c (construct_inferior_arguments): Handle empty arguments.
+
 2002-12-02  Adam Fedor  <fedor@gnu.org>
            Klee Dienes  <kdienes@apple.com>
 
index 6b4d7ae367a6a49cf4a6f067e547316e0ce47e7b..2c631bcb5d200ef20c287293ff3b98810dfe52b8 100644 (file)
@@ -278,7 +278,7 @@ construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv)
 
       /* We over-compute the size.  It shouldn't matter.  */
       for (i = 0; i < argc; ++i)
-       length += 2 * strlen (argv[i]) + 1;
+       length += 2 * strlen (argv[i]) + 1 + 2 * (argv[i][0] == '\0');
 
       result = (char *) xmalloc (length);
       out = result;
@@ -288,11 +288,20 @@ construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv)
          if (i > 0)
            *out++ = ' ';
 
-         for (cp = argv[i]; *cp; ++cp)
+         /* Need to handle empty arguments specially.  */
+         if (argv[i][0] == '\0')
            {
-             if (strchr (special, *cp) != NULL)
-               *out++ = '\\';
-             *out++ = *cp;
+             *out++ = '\'';
+             *out++ = '\'';
+           }
+         else
+           {
+             for (cp = argv[i]; *cp; ++cp)
+               {
+                 if (strchr (special, *cp) != NULL)
+                   *out++ = '\\';
+                 *out++ = *cp;
+               }
            }
        }
       *out = '\0';