From f17170e5e261d76b3481d29203466800d2e9a69b Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Tue, 24 May 2011 21:00:09 +0000 Subject: [PATCH] PR breakpoint/12803 * linespec.c (keep_name_info): Add handling for "volatile" keyword. (decode_compound): Unconditionally call keep_name_info. --- gdb/ChangeLog | 6 ++++++ gdb/linespec.c | 28 +++++++++++++++++----------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 35012d2243..409426360a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2011-05-24 Keith Seitz + + PR breakpoint/12803 + * linespec.c (keep_name_info): Add handling for "volatile" keyword. + (decode_compound): Unconditionally call keep_name_info. + 2011-05-24 Pedro Alves * breakpoint.c (watchpoint_check): If the watchpoint went out of diff --git a/gdb/linespec.c b/gdb/linespec.c index 871d37d953..dcb80ff382 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -715,8 +715,7 @@ keep_name_info (char *ptr) if (name_end (ptr)) return remove_trailing_whitespace (start, ptr); - while (isspace (*p)) - ++p; + p = skip_spaces (p); if (*p == '<') ptr = p = find_template_name_end (ptr); @@ -731,12 +730,21 @@ keep_name_info (char *ptr) return remove_trailing_whitespace (start, ptr); /* Keep important keywords. */ - while (isspace (*p)) - ++p; - if (strncmp (p, "const", 5) == 0 - && (isspace (p[5]) || p[5] == '\0' - || strchr (get_gdb_completer_quote_characters (), p[5]) != NULL)) - ptr = p = p + 5; + while (1) + { + char *quotes = get_gdb_completer_quote_characters (); + p = skip_spaces (p); + if (strncmp (p, "const", 5) == 0 + && (isspace (p[5]) || p[5] == '\0' + || strchr (quotes, p[5]) != NULL)) + ptr = p = p + 5; + else if (strncmp (p, "volatile", 8) == 0 + && (isspace (p[8]) || p[8] == '\0' + || strchr (quotes, p[8]) != NULL)) + ptr = p = p + 8; + else + break; + } return remove_trailing_whitespace (start, ptr); } @@ -1574,9 +1582,7 @@ decode_compound (char **argptr, int funfirstline, /* We couldn't find a class, so we're in case 2 above. We check the entire name as a symbol instead. */ - if (current_language->la_language == language_cplus - || current_language->la_language == language_java) - p = keep_name_info (p); + p = keep_name_info (p); copy = (char *) alloca (p - saved_arg2 + 1); memcpy (copy, saved_arg2, p - saved_arg2); -- 2.34.1