gdb:
authorTom Tromey <tromey@redhat.com>
Thu, 14 Aug 2008 18:03:22 +0000 (18:03 +0000)
committerTom Tromey <tromey@redhat.com>
Thu, 14 Aug 2008 18:03:22 +0000 (18:03 +0000)
* macrocmd.c (macro_define_command): Check for NULL argument.
(macro_undef_command): Likewise.
gdb/testsuite:
* gdb.base/macscp.exp: Add regression test for "macro define" or
"macro undef" with no arguments.

gdb/ChangeLog
gdb/macrocmd.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/macscp.exp

index f246016..3973634 100644 (file)
@@ -1,3 +1,8 @@
+2008-08-14  Tom Tromey  <tromey@redhat.com>
+
+       * macrocmd.c (macro_define_command): Check for NULL argument.
+       (macro_undef_command): Likewise.
+
 2008-08-14  Pedro Alves  <pedro@codesourcery.com>
 
        * infcmd.c (continue_1): Add an ERROR_NO_INFERIOR call.
index 4a70d4f..8213c0d 100644 (file)
@@ -235,8 +235,12 @@ macro_define_command (char *exp, int from_tty)
 {
   struct macro_definition new_macro;
   char *name = NULL;
-  struct cleanup *cleanup_chain = make_cleanup (free_macro_definition_ptr,
-                                               &new_macro);
+  struct cleanup *cleanup_chain;
+
+  if (!exp)
+    error (_("usage: macro define NAME[(ARGUMENT-LIST)] [REPLACEMENT-LIST]"));
+
+  cleanup_chain = make_cleanup (free_macro_definition_ptr, &new_macro);
   make_cleanup (free_current_contents, &name);
 
   memset (&new_macro, 0, sizeof (struct macro_definition));
@@ -308,6 +312,10 @@ static void
 macro_undef_command (char *exp, int from_tty)
 {
   char *name;
+
+  if (!exp)
+    error (_("usage: macro undef NAME"));
+
   skip_ws (&exp);
   name = extract_identifier (&exp);
   if (! name)
index b00e52b..577d0eb 100644 (file)
@@ -1,3 +1,8 @@
+2008-08-14  Tom Tromey  <tromey@redhat.com>
+
+       * gdb.base/macscp.exp: Add regression test for "macro define" or
+       "macro undef" with no arguments.
+
 2008-08-08  Paul Pluzhnikov  <ppluzhnikov@google.com>
 
        * gdb.base/args.exp: Prevent ~/.gdbinit from affecting test.
index 2df0eef..3424714 100644 (file)
@@ -470,6 +470,16 @@ gdb_test "print M" \
     "No symbol \"M\" in current context\." \
     "print expression with macro after user undef."
 
+# Regression test; this used to crash.
+gdb_test "macro define" \
+    "usage: macro define.*" \
+    "macro define with no arguments"
+
+# Regression test; this used to crash.
+gdb_test "macro undef" \
+    "usage: macro undef.*" \
+    "macro undef with no arguments"
+
 # Regression test; this used to emit the wrong error.
 gdb_test "macro expand SPLICE(x, y)" \
   "Token splicing is not implemented yet." \