* macros.c (Fend_kbd_macro): Don't use XFASTINT to check if arg is

negative; XFASTINT only works on values known to be positive.
	(Fexecute_kbd_macro): Check QUIT in the repetition loop.  If the
	macro is null, no characters are actually being read, so this
	matters.
This commit is contained in:
Jim Blandy 1992-12-12 15:35:41 +00:00
parent 997bf68d0a
commit e86f81cc46

View file

@ -115,8 +115,8 @@ An argument of zero means repeat until error.")
Fexecute_kbd_macro (Vlast_kbd_macro, arg);
else
{
XFASTINT (arg)--;
if (XFASTINT (arg) > 0)
XSETINT (arg, XINT (arg)-1);
if (XINT (arg) > 0)
Fexecute_kbd_macro (Vlast_kbd_macro, arg);
}
return Qnil;
@ -217,6 +217,8 @@ COUNT is a repeat count, or nil for once, or 0 for infinite loop.")
executing_macro_index = 0;
command_loop_1 ();
QUIT;
}
while (--repeat && (XTYPE (Vexecuting_macro) == Lisp_String
|| XTYPE (Vexecuting_macro) == Lisp_Vector));