From 886a217cf4ad31024cf799bf2803c39c07ad1d15 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 14 Aug 2008 18:03:22 +0000 Subject: [PATCH] gdb: * 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 | 5 +++++ gdb/macrocmd.c | 12 ++++++++++-- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/macscp.exp | 10 ++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f246016442b..3973634a39b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2008-08-14 Tom Tromey + + * macrocmd.c (macro_define_command): Check for NULL argument. + (macro_undef_command): Likewise. + 2008-08-14 Pedro Alves * infcmd.c (continue_1): Add an ERROR_NO_INFERIOR call. diff --git a/gdb/macrocmd.c b/gdb/macrocmd.c index 4a70d4fb3d3..8213c0d703b 100644 --- a/gdb/macrocmd.c +++ b/gdb/macrocmd.c @@ -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) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b00e52b03d0..577d0ebac8d 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-08-14 Tom Tromey + + * gdb.base/macscp.exp: Add regression test for "macro define" or + "macro undef" with no arguments. + 2008-08-08 Paul Pluzhnikov * gdb.base/args.exp: Prevent ~/.gdbinit from affecting test. diff --git a/gdb/testsuite/gdb.base/macscp.exp b/gdb/testsuite/gdb.base/macscp.exp index 2df0eef3d3c..3424714adde 100644 --- a/gdb/testsuite/gdb.base/macscp.exp +++ b/gdb/testsuite/gdb.base/macscp.exp @@ -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." \ -- 2.30.2