Fix a bug in OptionGroupWatchpoint.cpp where the '-w' option arg parsing result was not checked

to effect an early error return.

Plus add logic to 'frame variable' command object to check that when watchpoint option is on,
only one variable with exact name (no regex) is specified as the sole command arg.

llvm-svn: 139524
This commit is contained in:
Johnny Chen 2011-09-12 19:12:06 +00:00
parent 7bfedd69c5
commit 3a9838c07b
2 changed files with 18 additions and 1 deletions

View File

@ -414,6 +414,22 @@ public:
if (variable_list)
{
// If watching a variable, there are certain restrictions to be followed.
if (m_option_watchpoint.watch_variable)
{
if (command.GetArgumentCount() != 1) {
result.GetErrorStream().Printf("error: specify exactly one variable when using the '-w' option\n");
result.SetStatus(eReturnStatusFailed);
return false;
} else if (m_option_variable.use_regex) {
result.GetErrorStream().Printf("error: specify your variable name exactly (no regex) when using the '-w' option\n");
result.SetStatus(eReturnStatusFailed);
return false;
}
// Things have checked out ok...
// m_option_watchpoint.watch_mode specifies the mode for watching.
}
if (command.GetArgumentCount() > 0)
{
VariableList regex_var_list;

View File

@ -55,9 +55,10 @@ OptionGroupWatchpoint::SetOptionValue (CommandInterpreter &interpreter,
switch (short_option)
{
case 'w': {
watch_variable = false;
OptionEnumValueElement *enum_values = g_option_table[option_idx].enum_values;
watch_mode = (WatchMode) Args::StringToOptionEnum(option_arg, enum_values, 0, &watch_variable);
if (!watch_variable)
error.SetErrorStringWithFormat("Invalid option arg for '-w': '%s'.\n", option_arg);
break;
}
default: