|
@@ -183,7 +183,7 @@ void menu_add_option(int token, char *arg)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static int menu_range_valid_sym(struct symbol *sym, struct symbol *sym2)
|
|
|
|
|
|
+static int menu_validate_number(struct symbol *sym, struct symbol *sym2)
|
|
{
|
|
{
|
|
return sym2->type == S_INT || sym2->type == S_HEX ||
|
|
return sym2->type == S_INT || sym2->type == S_HEX ||
|
|
(sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name));
|
|
(sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name));
|
|
@@ -201,6 +201,15 @@ static void sym_check_prop(struct symbol *sym)
|
|
prop_warn(prop,
|
|
prop_warn(prop,
|
|
"default for config symbol '%s'"
|
|
"default for config symbol '%s'"
|
|
" must be a single symbol", sym->name);
|
|
" must be a single symbol", sym->name);
|
|
|
|
+ if (prop->expr->type != E_SYMBOL)
|
|
|
|
+ break;
|
|
|
|
+ sym2 = prop_get_symbol(prop);
|
|
|
|
+ if (sym->type == S_HEX || sym->type == S_INT) {
|
|
|
|
+ if (!menu_validate_number(sym, sym2))
|
|
|
|
+ prop_warn(prop,
|
|
|
|
+ "'%s': number is invalid",
|
|
|
|
+ sym->name);
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
case P_SELECT:
|
|
case P_SELECT:
|
|
sym2 = prop_get_symbol(prop);
|
|
sym2 = prop_get_symbol(prop);
|
|
@@ -220,8 +229,8 @@ static void sym_check_prop(struct symbol *sym)
|
|
if (sym->type != S_INT && sym->type != S_HEX)
|
|
if (sym->type != S_INT && sym->type != S_HEX)
|
|
prop_warn(prop, "range is only allowed "
|
|
prop_warn(prop, "range is only allowed "
|
|
"for int or hex symbols");
|
|
"for int or hex symbols");
|
|
- if (!menu_range_valid_sym(sym, prop->expr->left.sym) ||
|
|
|
|
- !menu_range_valid_sym(sym, prop->expr->right.sym))
|
|
|
|
|
|
+ if (!menu_validate_number(sym, prop->expr->left.sym) ||
|
|
|
|
+ !menu_validate_number(sym, prop->expr->right.sym))
|
|
prop_warn(prop, "range is invalid");
|
|
prop_warn(prop, "range is invalid");
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|