mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-23 12:56:51 +03:00
* edit-widget.h: Add new field macro_depth to control depth of
macro recursion. * edit.c (edit_execute_macro): Make static. Increment macro_depth on entry, decrement on exit, don't allow it to be too large.
This commit is contained in:
parent
341c4775c5
commit
63983758e0
@ -1,5 +1,11 @@
|
|||||||
2002-10-20 Pavel Roskin <proski@gnu.org>
|
2002-10-20 Pavel Roskin <proski@gnu.org>
|
||||||
|
|
||||||
|
* edit-widget.h: Add new field macro_depth to control depth of
|
||||||
|
macro recursion.
|
||||||
|
* edit.c (edit_execute_macro): Make static. Increment
|
||||||
|
macro_depth on entry, decrement on exit, don't allow it to be
|
||||||
|
too large.
|
||||||
|
|
||||||
* wordproc.c (line_start): Remove incorrect optimization abusing
|
* wordproc.c (line_start): Remove incorrect optimization abusing
|
||||||
static varaibles. Internal formatting should be usable now.
|
static varaibles. Internal formatting should be usable now.
|
||||||
|
|
||||||
|
@ -116,6 +116,7 @@ struct editor_widget {
|
|||||||
|
|
||||||
/* macro stuff */
|
/* macro stuff */
|
||||||
int macro_i; /* -1 if not recording index to macro[] otherwise */
|
int macro_i; /* -1 if not recording index to macro[] otherwise */
|
||||||
|
int macro_depth; /* depth of the macro recursion */
|
||||||
struct macro macro[MAX_MACRO_LENGTH];
|
struct macro macro[MAX_MACRO_LENGTH];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
12
edit/edit.c
12
edit/edit.c
@ -1920,7 +1920,7 @@ static void check_and_wrap_line (WEdit * edit)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void edit_execute_macro (WEdit * edit, struct macro macro[], int n);
|
static void edit_execute_macro (WEdit *edit, struct macro macro[], int n);
|
||||||
|
|
||||||
int edit_translate_key (WEdit * edit, unsigned int x_keycode, long x_key, int x_state, int *cmd, int *ch)
|
int edit_translate_key (WEdit * edit, unsigned int x_keycode, long x_key, int x_state, int *cmd, int *ch)
|
||||||
{
|
{
|
||||||
@ -2586,14 +2586,22 @@ int edit_execute_command (WEdit * edit, int command, int char_for_insertion)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
void edit_execute_macro (WEdit * edit, struct macro macro[], int n)
|
static void
|
||||||
|
edit_execute_macro (WEdit *edit, struct macro macro[], int n)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
|
if (edit->macro_depth++ > 256) {
|
||||||
|
edit_error_dialog (_(" Error "), _("Macro recursion is too deep"));
|
||||||
|
edit->macro_depth--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
edit->force |= REDRAW_PAGE;
|
edit->force |= REDRAW_PAGE;
|
||||||
for (; i < n; i++) {
|
for (; i < n; i++) {
|
||||||
edit_execute_cmd (edit, macro[i].command, macro[i].ch);
|
edit_execute_cmd (edit, macro[i].command, macro[i].ch);
|
||||||
}
|
}
|
||||||
edit_update_screen (edit);
|
edit_update_screen (edit);
|
||||||
|
edit->macro_depth--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* User edit menu, like user menu (F2) but only in editor. */
|
/* User edit menu, like user menu (F2) but only in editor. */
|
||||||
|
Loading…
Reference in New Issue
Block a user