projects
/
openwrt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
p54: fix a null pointer dereference bug
[openwrt.git]
/
scripts
/
config
/
mconf.c
diff --git
a/scripts/config/mconf.c
b/scripts/config/mconf.c
index
083b23e
..
8c58b62
100644
(file)
--- a/
scripts/config/mconf.c
+++ b/
scripts/config/mconf.c
@@
-405,6
+405,7
@@
static void get_symbol_str(struct gstr *r, struct symbol *sym)
sym_get_string_value(sym));
for_all_prompts(sym, prop)
get_prompt_str(r, prop);
sym_get_string_value(sym));
for_all_prompts(sym, prop)
get_prompt_str(r, prop);
+
hit = false;
for_all_properties(sym, prop, P_SELECT) {
if (!hit) {
hit = false;
for_all_properties(sym, prop, P_SELECT) {
if (!hit) {
@@
-416,11
+417,29
@@
static void get_symbol_str(struct gstr *r, struct symbol *sym)
}
if (hit)
str_append(r, "\n");
}
if (hit)
str_append(r, "\n");
+
+ hit = false;
+ for_all_properties(sym, prop, P_DESELECT) {
+ if (!hit) {
+ str_append(r, " Deselects: ");
+ hit = true;
+ } else
+ str_printf(r, " && ");
+ expr_gstr_print(prop->expr, r);
+ }
+ if (hit)
+ str_append(r, "\n");
+
if (sym->rev_dep.expr) {
str_append(r, " Selected by: ");
expr_gstr_print(sym->rev_dep.expr, r);
str_append(r, "\n");
}
if (sym->rev_dep.expr) {
str_append(r, " Selected by: ");
expr_gstr_print(sym->rev_dep.expr, r);
str_append(r, "\n");
}
+ if (sym->rev_dep_inv.expr) {
+ str_append(r, " Deselected by: ");
+ expr_gstr_print(sym->rev_dep_inv.expr, r);
+ str_append(r, "\n");
+ }
str_append(r, "\n\n");
}
str_append(r, "\n\n");
}
@@
-888,6
+907,7
@@
static void conf_choice(struct menu *menu)
const char *prompt = menu_get_prompt(menu);
struct menu *child;
struct symbol *active;
const char *prompt = menu_get_prompt(menu);
struct menu *child;
struct symbol *active;
+ struct property *prop;
int stat;
active = sym_get_choice_value(menu->sym);
int stat;
active = sym_get_choice_value(menu->sym);
@@
-920,9
+940,13
@@
static void conf_choice(struct menu *menu)
case 0:
if (sscanf(input_buf, "%p", &child) != 1)
break;
case 0:
if (sscanf(input_buf, "%p", &child) != 1)
break;
- if ((menu->sym->flags & SYMBOL_RESET) &&
- sym_get_tristate_value(child->sym) != yes)
- conf_reset();
+
+ if (sym_get_tristate_value(child->sym) != yes) {
+ for_all_properties(menu->sym, prop, P_RESET) {
+ if (expr_calc_value(prop->visible.expr) != no)
+ conf_reset();
+ }
+ }
sym_set_tristate_value(child->sym, yes);
return;
case 1:
sym_set_tristate_value(child->sym, yes);
return;
case 1:
This page took
0.02539 seconds
and
4
git commands to generate.