* 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); Fexecute_kbd_macro (Vlast_kbd_macro, arg);
else else
{ {
XFASTINT (arg)--; XSETINT (arg, XINT (arg)-1);
if (XFASTINT (arg) > 0) if (XINT (arg) > 0)
Fexecute_kbd_macro (Vlast_kbd_macro, arg); Fexecute_kbd_macro (Vlast_kbd_macro, arg);
} }
return Qnil; return Qnil;
@ -217,6 +217,8 @@ COUNT is a repeat count, or nil for once, or 0 for infinite loop.")
executing_macro_index = 0; executing_macro_index = 0;
command_loop_1 (); command_loop_1 ();
QUIT;
} }
while (--repeat && (XTYPE (Vexecuting_macro) == Lisp_String while (--repeat && (XTYPE (Vexecuting_macro) == Lisp_String
|| XTYPE (Vexecuting_macro) == Lisp_Vector)); || XTYPE (Vexecuting_macro) == Lisp_Vector));