+2010-03-26  Tom Tromey  <tromey@redhat.com>
+
+       * breakpoint.c (commands_command_1): Duplicate 'arg'.
+
 2010-03-26  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * breakpoint.c (expand_line_sal_maybe): Always call skip_prologue_sal.
 
        arg = xstrprintf ("%d-%d", multi_start, multi_end);
       else if (breakpoint_count > 0)
        arg = xstrprintf ("%d", breakpoint_count);
-      make_cleanup (xfree, arg);
     }
+  else
+    /* The command loop has some static state, so we need to preserve
+       our argument.  */
+    arg = xstrdup (arg);
+  make_cleanup (xfree, arg);
 
   map_breakpoint_numbers (arg, do_map_commands_command, &info);