Fix a bug binding menu command to a default object class character
Due to a wrong looping variable, it was possible to bind a menu accelerator key to a default object class.
This commit is contained in:
+18
-12
@@ -1768,6 +1768,23 @@ char **opp;
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check if character c is illegal as a menu command key */
|
||||||
|
boolean
|
||||||
|
illegal_menu_cmd_key(c)
|
||||||
|
char c;
|
||||||
|
{
|
||||||
|
if (c == 0 || c == '\r' || c == '\n' || c == '\033'
|
||||||
|
|| c == ' ' || digit(c) || (letter(c) && c != '@'))
|
||||||
|
return TRUE;
|
||||||
|
else { /* reject default object class symbols */
|
||||||
|
int j;
|
||||||
|
for (j = 1; j < MAXOCLASSES; j++)
|
||||||
|
if (c == def_oc_syms[j].sym)
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
parseoptions(opts, tinitial, tfrom_file)
|
parseoptions(opts, tinitial, tfrom_file)
|
||||||
register char *opts;
|
register char *opts;
|
||||||
@@ -3226,22 +3243,11 @@ boolean tinitial, tfrom_file;
|
|||||||
} else if ((op = string_for_opt(opts, FALSE)) != 0) {
|
} else if ((op = string_for_opt(opts, FALSE)) != 0) {
|
||||||
int j;
|
int j;
|
||||||
char c, op_buf[BUFSZ];
|
char c, op_buf[BUFSZ];
|
||||||
boolean isbad = FALSE;
|
|
||||||
|
|
||||||
escapes(op, op_buf);
|
escapes(op, op_buf);
|
||||||
c = *op_buf;
|
c = *op_buf;
|
||||||
|
|
||||||
if (c == 0 || c == '\r' || c == '\n' || c == '\033'
|
if (illegal_menu_cmd_key(c))
|
||||||
|| c == ' ' || digit(c) || (letter(c) && c != '@'))
|
|
||||||
isbad = TRUE;
|
|
||||||
else /* reject default object class symbols */
|
|
||||||
for (j = 1; j < MAXOCLASSES; j++)
|
|
||||||
if (c == def_oc_syms[i].sym) {
|
|
||||||
isbad = TRUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isbad)
|
|
||||||
badoption(opts);
|
badoption(opts);
|
||||||
else
|
else
|
||||||
add_menu_cmd_alias(c, default_menu_cmd_info[i].cmd);
|
add_menu_cmd_alias(c, default_menu_cmd_info[i].cmd);
|
||||||
|
|||||||
Reference in New Issue
Block a user