Replace QUIT with maybe_quit

There’s no longer need to have QUIT stand for a slug of C statements.
Use the more-obvious function-call syntax instead.
Also, use true and false when setting immediate_quit.
These changes should not affect the generated machine code.
* src/lisp.h (QUIT): Remove.  All uses replaced by maybe_quit.
This commit is contained in:
Paul Eggert 2017-01-25 21:13:19 -08:00
parent 1392ec7420
commit b3a3ed526d
41 changed files with 197 additions and 202 deletions

View file

@ -672,7 +672,7 @@ usage: (or CONDITIONS...) */)
if (!NILP (val))
break;
args = XCDR (args);
QUIT;
maybe_quit ();
@}
@end group
@ -792,8 +792,8 @@ their addresses after performing Lisp evaluation. Lisp evaluation can
occur via calls to @code{eval_sub} or @code{Feval}, either directly or
indirectly.
@cindex @code{QUIT}, use in Lisp primitives
Note the call to the @code{QUIT} macro inside the loop: this macro
@cindex @code{maybe_quit}, use in Lisp primitives
Note the call to @code{maybe_quit} inside the loop: this function
checks whether the user pressed @kbd{C-g}, and if so, aborts the
processing. You should do that in any loop that can potentially
require a large number of iterations; in this case, the list of

View file

@ -225,7 +225,7 @@ this command:
handle SIGINT stop nopass
After this 'handle' command, SIGINT will return control to GDB. If
you want the C-g to cause a QUIT within Emacs as well, omit the 'nopass'.
you want the C-g to cause a quit within Emacs as well, omit the 'nopass'.
See the GDB manual for more details about signal handling and the
'handle' command.

View file

@ -623,7 +623,7 @@ loaded and the keystroke automatically re-typed."
(unwind-protect
(progn
(sit-for 2)
(identity 1) ; this forces a call to QUIT; in bytecode.c.
(identity 1) ; This forces a call to maybe_quit in bytecode.c.
(setq okay t))
(progn
(delete-region savemax (point-max))

View file

@ -7572,7 +7572,7 @@ More precisely, a char with closeparen syntax is self-inserted.")
;; This executes C-g typed while Emacs is waiting for a command.
;; Quitting out of a program does not go through here;
;; that happens in the QUIT macro at the C code level.
;; that happens in the maybe_quit function at the C code level.
(defun keyboard-quit ()
"Signal a `quit' condition.
During execution of Lisp code, this character causes a quit directly.

View file

@ -2880,7 +2880,7 @@ DEFUN ("make-list", Fmake_list, Smake_list, 2, 2, 0,
for (EMACS_INT size = XFASTINT (length); 0 < size; size--)
{
val = Fcons (init, val);
QUIT;
maybe_quit ();
}
return val;

View file

@ -415,19 +415,16 @@ followed by the rest of the buffers. */)
}
/* Like Fassoc, but use Fstring_equal to compare
(which ignores text properties),
and don't ever QUIT. */
(which ignores text properties), and don't ever quit. */
static Lisp_Object
assoc_ignore_text_properties (register Lisp_Object key, Lisp_Object list)
assoc_ignore_text_properties (Lisp_Object key, Lisp_Object list)
{
register Lisp_Object tail;
Lisp_Object tail;
for (tail = list; CONSP (tail); tail = XCDR (tail))
{
register Lisp_Object elt, tem;
elt = XCAR (tail);
tem = Fstring_equal (Fcar (elt), key);
if (!NILP (tem))
Lisp_Object elt = XCAR (tail);
if (!NILP (Fstring_equal (Fcar (elt), key)))
return elt;
}
return Qnil;

View file

@ -679,7 +679,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
{
quitcounter = 1;
maybe_gc ();
QUIT;
maybe_quit ();
}
pc += op;
NEXT;

View file

@ -794,7 +794,7 @@ invoke it. If KEYS is omitted or nil, the return value of
}
unbind_to (speccount, Qnil);
QUIT;
maybe_quit ();
args[0] = Qfuncall_interactively;
args[1] = function;

View file

@ -198,11 +198,11 @@ call_process_cleanup (Lisp_Object buffer)
{
kill (-synch_process_pid, SIGINT);
message1 ("Waiting for process to die...(type C-g again to kill it instantly)");
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
wait_for_termination (synch_process_pid, 0, 1);
synch_process_pid = 0;
immediate_quit = 0;
immediate_quit = false;
message1 ("Waiting for process to die...done");
}
#endif /* !MSDOS */
@ -726,8 +726,8 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd,
process_coding.src_multibyte = 0;
}
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
if (0 <= fd0)
{
@ -769,7 +769,7 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd,
}
/* Now NREAD is the total amount of data in the buffer. */
immediate_quit = 0;
immediate_quit = false;
if (!nread)
;
@ -843,7 +843,7 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd,
display_on_the_fly = true;
}
immediate_quit = true;
QUIT;
maybe_quit ();
}
give_up: ;
@ -860,7 +860,7 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd,
wait_for_termination (pid, &status, fd0 < 0);
#endif
immediate_quit = 0;
immediate_quit = false;
/* Don't kill any children that the subprocess may have left behind
when exiting. */

View file

@ -1993,7 +1993,7 @@ programs. */)
: 0);
ccl_driver (&ccl, NULL, NULL, 0, 0, Qnil);
QUIT;
maybe_quit ();
if (ccl.status != CCL_STAT_SUCCESS)
error ("Error in CCL program at %dth code", ccl.ic);

View file

@ -186,7 +186,7 @@ This function can be called only in unibyte buffers. */)
decompressed = avail_out - stream.avail_out;
insert_from_gap (decompressed, decompressed, 0);
unwind_data.nbytes += decompressed;
QUIT;
maybe_quit ();
}
while (inflate_status == Z_OK);

View file

@ -139,7 +139,7 @@ read_dirent (DIR *dir, Lisp_Object dirname)
#endif
report_file_error ("Reading directory", dirname);
}
QUIT;
maybe_quit ();
}
}
@ -248,13 +248,13 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
/* Now that we have unwind_protect in place, we might as well
allow matching to be interrupted. */
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
bool wanted = (NILP (match)
|| re_search (bufp, SSDATA (name), len, 0, len, 0) >= 0);
immediate_quit = 0;
immediate_quit = false;
if (wanted)
{
@ -508,7 +508,7 @@ file_name_completion (Lisp_Object file, Lisp_Object dirname, bool all_flag,
ptrdiff_t len = dirent_namelen (dp);
bool canexclude = 0;
QUIT;
maybe_quit ();
if (len < SCHARS (encoded_file)
|| (scmp (dp->d_name, SSDATA (encoded_file),
SCHARS (encoded_file))

View file

@ -2695,7 +2695,7 @@ called interactively, INHERIT is t. */)
string[i] = str[i % len];
while (n > stringlen)
{
QUIT;
maybe_quit ();
if (!NILP (inherit))
insert_and_inherit (string, stringlen);
else

View file

@ -858,7 +858,7 @@ usage: (let* VARLIST BODY...) */)
for (varlist = XCAR (args); CONSP (varlist); varlist = XCDR (varlist))
{
QUIT;
maybe_quit ();
elt = XCAR (varlist);
if (SYMBOLP (elt))
@ -925,7 +925,7 @@ usage: (let VARLIST BODY...) */)
for (argnum = 0; CONSP (varlist); varlist = XCDR (varlist))
{
QUIT;
maybe_quit ();
elt = XCAR (varlist);
if (SYMBOLP (elt))
temps [argnum++] = Qnil;
@ -978,7 +978,7 @@ usage: (while TEST BODY...) */)
body = XCDR (args);
while (!NILP (eval_sub (test)))
{
QUIT;
maybe_quit ();
prog_ignore (body);
}
@ -1011,7 +1011,7 @@ definitions to shadow the loaded ones for use in file byte-compilation. */)
until we get a symbol that is not an alias. */
while (SYMBOLP (def))
{
QUIT;
maybe_quit ();
sym = def;
tem = Fassq (sym, environment);
if (NILP (tem))
@ -1131,7 +1131,7 @@ unwind_to_catch (struct handler *catch, Lisp_Object value)
/* Restore certain special C variables. */
set_poll_suppress_count (catch->poll_suppress_count);
unblock_input_to (catch->interrupt_input_blocked);
immediate_quit = 0;
immediate_quit = false;
do
{
@ -1514,10 +1514,10 @@ signal_or_quit (Lisp_Object error_symbol, Lisp_Object data, bool keyboard_quit)
Lisp_Object string;
Lisp_Object real_error_symbol
= (NILP (error_symbol) ? Fcar (data) : error_symbol);
register Lisp_Object clause = Qnil;
Lisp_Object clause = Qnil;
struct handler *h;
immediate_quit = 0;
immediate_quit = false;
if (gc_in_progress || waiting_for_input)
emacs_abort ();
@ -2135,7 +2135,7 @@ eval_sub (Lisp_Object form)
if (!CONSP (form))
return form;
QUIT;
maybe_quit ();
maybe_gc ();
@ -2721,7 +2721,7 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */)
Lisp_Object val;
ptrdiff_t count;
QUIT;
maybe_quit ();
if (++lisp_eval_depth > max_lisp_eval_depth)
{
@ -2966,7 +2966,7 @@ funcall_lambda (Lisp_Object fun, ptrdiff_t nargs,
bool previous_optional_or_rest = false;
for (; CONSP (syms_left); syms_left = XCDR (syms_left))
{
QUIT;
maybe_quit ();
next = XCAR (syms_left);
if (!SYMBOLP (next))

View file

@ -316,7 +316,7 @@ use the standard functions without calling themselves recursively. */)
}
}
QUIT;
maybe_quit ();
}
return result;
}
@ -1960,9 +1960,9 @@ permissions. */)
report_file_error ("Copying permissions to", newname);
}
#else /* not WINDOWSNT */
immediate_quit = 1;
immediate_quit = true;
ifd = emacs_open (SSDATA (encoded_file), O_RDONLY, 0);
immediate_quit = 0;
immediate_quit = false;
if (ifd < 0)
report_file_error ("Opening input file", file);
@ -2024,8 +2024,8 @@ permissions. */)
oldsize = out_st.st_size;
}
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
if (clone_file (ofd, ifd))
newsize = st.st_size;
@ -2047,7 +2047,7 @@ permissions. */)
if (newsize < oldsize && ftruncate (ofd, newsize) != 0)
report_file_error ("Truncating output file", newname);
immediate_quit = 0;
immediate_quit = false;
#ifndef MSDOS
/* Preserve the original file permissions, and if requested, also its
@ -3393,13 +3393,13 @@ read_non_regular (Lisp_Object state)
{
int nbytes;
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
nbytes = emacs_read (XSAVE_INTEGER (state, 0),
((char *) BEG_ADDR + PT_BYTE - BEG_BYTE
+ XSAVE_INTEGER (state, 1)),
XSAVE_INTEGER (state, 2));
immediate_quit = 0;
immediate_quit = false;
/* Fast recycle this object for the likely next call. */
free_misc (state);
return make_number (nbytes);
@ -3858,8 +3858,8 @@ by calling `format-decode', which see. */)
report_file_error ("Setting file position", orig_filename);
}
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
/* Count how many chars at the start of the file
match the text at the beginning of the buffer. */
while (1)
@ -3910,7 +3910,7 @@ by calling `format-decode', which see. */)
goto handled;
}
immediate_quit = true;
QUIT;
maybe_quit ();
/* Count how many chars at the end of the file
match the text at the end of the buffer. But, if we have
already found that decoding is necessary, don't waste time. */
@ -3967,7 +3967,7 @@ by calling `format-decode', which see. */)
if (nread == 0)
break;
}
immediate_quit = 0;
immediate_quit = false;
if (! giveup_match_end)
{
@ -4065,11 +4065,11 @@ by calling `format-decode', which see. */)
quitting while reading a huge file. */
/* Allow quitting out of the actual I/O. */
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
this = emacs_read (fd, read_buf + unprocessed,
READ_BUF_SIZE - unprocessed);
immediate_quit = 0;
immediate_quit = false;
if (this <= 0)
break;
@ -4284,13 +4284,13 @@ by calling `format-decode', which see. */)
/* Allow quitting out of the actual I/O. We don't make text
part of the buffer until all the reading is done, so a C-g
here doesn't do any harm. */
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
this = emacs_read (fd,
((char *) BEG_ADDR + PT_BYTE - BEG_BYTE
+ inserted),
trytry);
immediate_quit = 0;
immediate_quit = false;
}
if (this <= 0)
@ -4602,7 +4602,7 @@ by calling `format-decode', which see. */)
}
}
QUIT;
maybe_quit ();
p = XCDR (p);
}
@ -4992,7 +4992,7 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
}
}
immediate_quit = 1;
immediate_quit = true;
if (STRINGP (start))
ok = a_write (desc, start, 0, SCHARS (start), &annotations, &coding);
@ -5016,7 +5016,7 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename,
save_errno = errno;
}
immediate_quit = 0;
immediate_quit = false;
/* fsync is not crucial for temporary files. Nor for auto-save
files, since they might lose some work anyway. */

View file

@ -505,7 +505,7 @@ read_lock_data (char *lfname, char lfinfo[MAX_LFINFO + 1])
/* readlinkat saw a non-symlink, but emacs_open saw a symlink.
The former must have been removed and replaced by the latter.
Try again. */
QUIT;
maybe_quit ();
}
return nbytes;

View file

@ -96,7 +96,7 @@ static void
rarely_quit (unsigned short int *quit_count)
{
if (! (++*quit_count & (QUIT_COUNT_HEURISTIC - 1)))
QUIT;
maybe_quit ();
}
/* Random data-structure functions. */
@ -132,7 +132,7 @@ To get the number of bytes, use `string-bytes'. */)
{
if (MOST_POSITIVE_FIXNUM < i)
error ("List too long");
QUIT;
maybe_quit ();
}
sequence = XCDR (sequence);
}
@ -178,7 +178,7 @@ which is at least the number of distinct elements. */)
halftail = XCDR (halftail);
if ((lolen & (QUIT_COUNT_HEURISTIC - 1)) == 0)
{
QUIT;
maybe_quit ();
if (lolen == 0)
hilen += UINTMAX_MAX + 1.0;
}

View file

@ -390,7 +390,7 @@ gnutls_try_handshake (struct Lisp_Process *proc)
{
ret = gnutls_handshake (state);
emacs_gnutls_handle_error (state, ret);
QUIT;
maybe_quit ();
}
while (ret < 0
&& gnutls_error_is_fatal (ret) == 0

View file

@ -1200,8 +1200,8 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos,
continuation_glyph_width = 0; /* In the fringe. */
#endif
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
/* It's just impossible to be too paranoid here. */
eassert (from == BYTE_TO_CHAR (frombyte) && frombyte == CHAR_TO_BYTE (from));
@ -1694,7 +1694,7 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos,
/* Nonzero if have just continued a line */
val_compute_motion.contin = (contin_hpos && prev_hpos == 0);
immediate_quit = 0;
immediate_quit = false;
return &val_compute_motion;
}

View file

@ -129,7 +129,7 @@ gap_left (ptrdiff_t charpos, ptrdiff_t bytepos, bool newgap)
Change BYTEPOS to be where we have actually moved the gap to.
Note that this cannot happen when we are called to make the
gap larger or smaller, since make_gap_larger and
make_gap_smaller prevent QUIT by setting inhibit-quit. */
make_gap_smaller set inhibit-quit. */
if (QUITP)
{
bytepos = new_s1;
@ -151,7 +151,7 @@ gap_left (ptrdiff_t charpos, ptrdiff_t bytepos, bool newgap)
GPT = charpos;
eassert (charpos <= bytepos);
if (GAP_SIZE > 0) *(GPT_ADDR) = 0; /* Put an anchor. */
QUIT;
maybe_quit ();
}
/* Move the gap to a position greater than the current GPT.
@ -185,7 +185,7 @@ gap_right (ptrdiff_t charpos, ptrdiff_t bytepos)
Change BYTEPOS to be where we have actually moved the gap to.
Note that this cannot happen when we are called to make the
gap larger or smaller, since make_gap_larger and
make_gap_smaller prevent QUIT by setting inhibit-quit. */
make_gap_smaller set inhibit-quit. */
if (QUITP)
{
bytepos = new_s1;
@ -204,7 +204,7 @@ gap_right (ptrdiff_t charpos, ptrdiff_t bytepos)
GPT_BYTE = bytepos;
eassert (charpos <= bytepos);
if (GAP_SIZE > 0) *(GPT_ADDR) = 0; /* Put an anchor. */
QUIT;
maybe_quit ();
}
/* If the selected window's old pointm is adjacent or covered by the
@ -464,7 +464,7 @@ make_gap_larger (ptrdiff_t nbytes_added)
enlarge_buffer_text (current_buffer, nbytes_added);
/* Prevent quitting in gap_left. We cannot allow a QUIT there,
/* Prevent quitting in gap_left. We cannot allow a quit there,
because that would leave the buffer text in an inconsistent
state, with 2 gap holes instead of just one. */
tem = Vinhibit_quit;
@ -512,7 +512,7 @@ make_gap_smaller (ptrdiff_t nbytes_removed)
if (GAP_SIZE - nbytes_removed < GAP_BYTES_MIN)
nbytes_removed = GAP_SIZE - GAP_BYTES_MIN;
/* Prevent quitting in gap_right. We cannot allow a QUIT there,
/* Prevent quitting in gap_right. We cannot allow a quit there,
because that would leave the buffer text in an inconsistent
state, with 2 gap holes instead of just one. */
tem = Vinhibit_quit;

View file

@ -87,7 +87,7 @@ char const DEV_TTY[] = "/dev/tty";
volatile int interrupt_input_blocked;
/* True means an input interrupt or alarm signal has arrived.
The QUIT macro checks this. */
The maybe_quit function checks this. */
volatile bool pending_signals;
#define KBD_BUFFER_SIZE 4096
@ -1416,7 +1416,7 @@ command_loop_1 (void)
if (!NILP (Vquit_flag))
{
Vexecuting_kbd_macro = Qt;
QUIT; /* Make some noise. */
maybe_quit (); /* Make some noise. */
/* Will return since macro now empty. */
}
}
@ -3591,7 +3591,7 @@ kbd_buffer_store_buffered_event (union buffered_input_event *event,
if (immediate_quit && NILP (Vinhibit_quit))
{
immediate_quit = false;
QUIT;
maybe_quit ();
}
}
}
@ -7426,7 +7426,7 @@ menu_bar_items (Lisp_Object old)
USE_SAFE_ALLOCA;
/* In order to build the menus, we need to call the keymap
accessors. They all call QUIT. But this function is called
accessors. They all call maybe_quit. But this function is called
during redisplay, during which a quit is fatal. So inhibit
quitting while building the menus.
We do this instead of specbind because (1) errors will clear it anyway
@ -7987,7 +7987,7 @@ tool_bar_items (Lisp_Object reuse, int *nitems)
*nitems = 0;
/* In order to build the menus, we need to call the keymap
accessors. They all call QUIT. But this function is called
accessors. They all call maybe_quit. But this function is called
during redisplay, during which a quit is fatal. So inhibit
quitting while building the menus. We do this instead of
specbind because (1) errors will clear it anyway and (2) this
@ -9806,7 +9806,7 @@ read_key_sequence_vs (Lisp_Object prompt, Lisp_Object continue_echo,
if (!NILP (prompt))
CHECK_STRING (prompt);
QUIT;
maybe_quit ();
specbind (Qinput_method_exit_on_first_char,
(NILP (cmd_loop) ? Qt : Qnil));
@ -9840,7 +9840,7 @@ read_key_sequence_vs (Lisp_Object prompt, Lisp_Object continue_echo,
if (i == -1)
{
Vquit_flag = Qt;
QUIT;
maybe_quit ();
}
return unbind_to (count,
@ -10278,7 +10278,7 @@ clear_waiting_for_input (void)
If we have a frame on the controlling tty, we assume that the
SIGINT was generated by C-g, so we call handle_interrupt.
Otherwise, tell QUIT to kill Emacs. */
Otherwise, tell maybe_quit to kill Emacs. */
static void
handle_interrupt_signal (int sig)
@ -10289,7 +10289,7 @@ handle_interrupt_signal (int sig)
{
/* If there are no frames there, let's pretend that we are a
well-behaving UN*X program and quit. We must not call Lisp
in a signal handler, so tell QUIT to exit when it is
in a signal handler, so tell maybe_quit to exit when it is
safe. */
Vquit_flag = Qkill_emacs;
}

View file

@ -523,7 +523,7 @@ access_keymap_1 (Lisp_Object map, Lisp_Object idx,
retval = Fcons (Qkeymap, Fcons (retval, retval_tail));
}
}
QUIT;
maybe_quit ();
}
return EQ (Qunbound, retval) ? get_keyelt (t_binding, autoload) : retval;
@ -877,7 +877,7 @@ store_in_keymap (Lisp_Object keymap, register Lisp_Object idx, Lisp_Object def)
should be inserted before it. */
goto keymap_end;
QUIT;
maybe_quit ();
}
keymap_end:
@ -1250,7 +1250,7 @@ recognize the default bindings, just as `read-key-sequence' does. */)
if (!CONSP (keymap))
return make_number (idx);
QUIT;
maybe_quit ();
}
}
@ -2466,7 +2466,7 @@ where_is_internal (Lisp_Object definition, Lisp_Object keymaps,
non-ascii prefixes like `C-down-mouse-2'. */
continue;
QUIT;
maybe_quit ();
data.definition = definition;
data.noindirect = noindirect;
@ -3173,7 +3173,7 @@ describe_map (Lisp_Object map, Lisp_Object prefix,
for (tail = map; CONSP (tail); tail = XCDR (tail))
{
QUIT;
maybe_quit ();
if (VECTORP (XCAR (tail))
|| CHAR_TABLE_P (XCAR (tail)))
@ -3426,7 +3426,7 @@ describe_vector (Lisp_Object vector, Lisp_Object prefix, Lisp_Object args,
int range_beg, range_end;
Lisp_Object val;
QUIT;
maybe_quit ();
if (i == stop)
{

View file

@ -3119,18 +3119,18 @@ struct handler
extern Lisp_Object memory_signal_data;
/* Check quit-flag and quit if it is non-nil.
Typing C-g does not directly cause a quit; it only sets Vquit_flag.
So the program needs to do QUIT at times when it is safe to quit.
Every loop that might run for a long time or might not exit
ought to do QUIT at least once, at a safe place.
Unless that is impossible, of course.
But it is very desirable to avoid creating loops where QUIT is impossible.
/* Check quit-flag and quit if it is non-nil. Typing C-g does not
directly cause a quit; it only sets Vquit_flag. So the program
needs to call maybe_quit at times when it is safe to quit. Every
loop that might run for a long time or might not exit ought to call
maybe_quit at least once, at a safe place. Unless that is
impossible, of course. But it is very desirable to avoid creating
loops where maybe_quit is impossible.
Exception: if you set immediate_quit to true,
then the handler that responds to the C-g does the quit itself.
This is a good thing to do around a loop that has no side effects
and (in particular) cannot call arbitrary Lisp code.
Exception: if you set immediate_quit, the handler that responds to
the C-g does the quit itself. This is a good thing to do around a
loop that has no side effects and (in particular) cannot call
arbitrary Lisp code.
If quit-flag is set to `kill-emacs' the SIGINT handler has received
a request to exit Emacs when it is safe to do.
@ -3138,7 +3138,6 @@ extern Lisp_Object memory_signal_data;
When not quitting, process any pending signals. */
extern void maybe_quit (void);
#define QUIT maybe_quit ()
/* True if ought to quit now. */

View file

@ -451,7 +451,7 @@ readbyte_from_file (int c, Lisp_Object readcharfun)
while (c == EOF && ferror (instream) && errno == EINTR)
{
unblock_input ();
QUIT;
maybe_quit ();
block_input ();
clearerr (instream);
c = getc (instream);
@ -1702,14 +1702,14 @@ build_load_history (Lisp_Object filename, bool entire)
Fcons (newelt, XCDR (tem))));
tem2 = XCDR (tem2);
QUIT;
maybe_quit ();
}
}
}
else
prev = tail;
tail = XCDR (tail);
QUIT;
maybe_quit ();
}
/* If we're loading an entire file, cons the new assoc onto the

View file

@ -325,7 +325,7 @@ each iteration of the macro. Iteration stops if LOOPFUNC returns nil. */)
executing_kbd_macro_iterations = ++success_count;
QUIT;
maybe_quit ();
}
while (--repeat
&& (STRINGP (Vexecuting_kbd_macro) || VECTORP (Vexecuting_kbd_macro)));

View file

@ -1865,7 +1865,7 @@ single string, rather than a cons cell whose car is a string. */)
case_fold);
if (EQ (tem, Qt))
return elt;
QUIT;
maybe_quit ();
}
return Qnil;
}

View file

@ -279,7 +279,7 @@ printchar (unsigned int ch, Lisp_Object fun)
unsigned char str[MAX_MULTIBYTE_LENGTH];
int len = CHAR_STRING (ch, str);
QUIT;
maybe_quit ();
if (NILP (fun))
{
@ -1352,7 +1352,7 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
max (sizeof " . #" + INT_STRLEN_BOUND (printmax_t),
40))];
QUIT;
maybe_quit ();
/* Detect circularities and truncate them. */
if (NILP (Vprint_circle))
@ -1446,7 +1446,7 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
FETCH_STRING_CHAR_ADVANCE (c, obj, i, i_byte);
QUIT;
maybe_quit ();
if (multibyte
? (CHAR_BYTE8_P (c) && (c = CHAR_TO_BYTE8 (c), true))
@ -1550,7 +1550,7 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
/* Here, we must convert each multi-byte form to the
corresponding character code before handing it to PRINTCHAR. */
FETCH_STRING_CHAR_ADVANCE (c, name, i, i_byte);
QUIT;
maybe_quit ();
if (escapeflag)
{
@ -1707,7 +1707,7 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
for (i = 0; i < size_in_chars; i++)
{
QUIT;
maybe_quit ();
c = bool_vector_uchar_data (obj)[i];
if (c == '\n' && print_escape_newlines)
print_c_string ("\\n", printcharfun);

View file

@ -3431,8 +3431,8 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
break;
}
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
ret = connect (s, sa, addrlen);
xerrno = errno;
@ -3459,7 +3459,7 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
retry_select:
FD_ZERO (&fdset);
FD_SET (s, &fdset);
QUIT;
maybe_quit ();
sc = pselect (s + 1, NULL, &fdset, NULL, NULL, NULL);
if (sc == -1)
{
@ -3481,7 +3481,7 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
}
#endif /* !WINDOWSNT */
immediate_quit = 0;
immediate_quit = false;
/* Discard the unwind protect closing S. */
specpdl_ptr = specpdl + count;
@ -3539,7 +3539,7 @@ connect_network_socket (Lisp_Object proc, Lisp_Object addrinfos,
#endif
}
immediate_quit = 0;
immediate_quit = false;
if (s < 0)
{
@ -4012,8 +4012,8 @@ usage: (make-network-process &rest ARGS) */)
struct addrinfo *res, *lres;
int ret;
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
struct addrinfo hints;
memset (&hints, 0, sizeof hints);
@ -4034,7 +4034,7 @@ usage: (make-network-process &rest ARGS) */)
#else
error ("%s/%s getaddrinfo error %d", SSDATA (host), portstring, ret);
#endif
immediate_quit = 0;
immediate_quit = false;
for (lres = res; lres; lres = lres->ai_next)
addrinfos = Fcons (conv_addrinfo_to_lisp (lres), addrinfos);
@ -5020,7 +5020,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
since we want to return C-g as an input character.
Otherwise, do pending quit if requested. */
if (read_kbd >= 0)
QUIT;
maybe_quit ();
else if (pending_signals)
process_pending_signals ();
@ -5748,7 +5748,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
{
/* Prevent input_pending from remaining set if we quit. */
clear_input_pending ();
QUIT;
maybe_quit ();
}
return got_some_output;
@ -7486,7 +7486,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd,
since we want to return C-g as an input character.
Otherwise, do pending quit if requested. */
if (read_kbd >= 0)
QUIT;
maybe_quit ();
/* Exit now if the cell we're waiting for became non-nil. */
if (! NILP (wait_for_cell) && ! NILP (XCAR (wait_for_cell)))

View file

@ -174,8 +174,8 @@ record_backtrace (log_t *log, EMACS_INT count)
some global flag so that some Elisp code can offload its
data elsewhere, so as to avoid the eviction code.
There are 2 ways to do that, AFAICT:
- Set a flag checked in QUIT, such that QUIT can then call
Fprofiler_cpu_log and stash the full log for later use.
- Set a flag checked in maybe_quit, such that maybe_quit can then
call Fprofiler_cpu_log and stash the full log for later use.
- Set a flag check in post-gc-hook, so that Elisp code can call
profiler-cpu-log. That gives us more flexibility since that
Elisp code can then do all kinds of fun stuff like write

View file

@ -1729,12 +1729,9 @@ typedef struct
/* Explicit quit checking is needed for Emacs, which uses polling to
process input events. */
#ifdef emacs
# define IMMEDIATE_QUIT_CHECK \
do { \
if (immediate_quit) QUIT; \
} while (0)
# define IMMEDIATE_QUIT_CHECK (immediate_quit ? maybe_quit () : (void) 0)
#else
# define IMMEDIATE_QUIT_CHECK ((void)0)
# define IMMEDIATE_QUIT_CHECK ((void) 0)
#endif
/* Structure to manage work area for range table. */

View file

@ -276,8 +276,9 @@ looking_at_1 (Lisp_Object string, bool posix)
posix,
!NILP (BVAR (current_buffer, enable_multibyte_characters)));
immediate_quit = 1;
QUIT; /* Do a pending quit right away, to avoid paradoxical behavior */
/* Do a pending quit right away, to avoid paradoxical behavior */
immediate_quit = true;
maybe_quit ();
/* Get pointers and sizes of the two strings
that make up the visible portion of the buffer. */
@ -310,7 +311,7 @@ looking_at_1 (Lisp_Object string, bool posix)
(NILP (Vinhibit_changing_match_data)
? &search_regs : NULL),
ZV_BYTE - BEGV_BYTE);
immediate_quit = 0;
immediate_quit = false;
#ifdef REL_ALLOC
r_alloc_inhibit_buffer_relocation (0);
#endif
@ -398,7 +399,7 @@ string_match_1 (Lisp_Object regexp, Lisp_Object string, Lisp_Object start,
? BVAR (current_buffer, case_canon_table) : Qnil),
posix,
STRING_MULTIBYTE (string));
immediate_quit = 1;
immediate_quit = true;
re_match_object = string;
val = re_search (bufp, SSDATA (string),
@ -406,7 +407,7 @@ string_match_1 (Lisp_Object regexp, Lisp_Object string, Lisp_Object start,
SBYTES (string) - pos_byte,
(NILP (Vinhibit_changing_match_data)
? &search_regs : NULL));
immediate_quit = 0;
immediate_quit = false;
/* Set last_thing_searched only when match data is changed. */
if (NILP (Vinhibit_changing_match_data))
@ -470,13 +471,13 @@ fast_string_match_internal (Lisp_Object regexp, Lisp_Object string,
bufp = compile_pattern (regexp, 0, table,
0, STRING_MULTIBYTE (string));
immediate_quit = 1;
immediate_quit = true;
re_match_object = string;
val = re_search (bufp, SSDATA (string),
SBYTES (string), 0,
SBYTES (string), 0);
immediate_quit = 0;
immediate_quit = false;
return val;
}
@ -497,9 +498,9 @@ fast_c_string_match_ignore_case (Lisp_Object regexp,
bufp = compile_pattern (regexp, 0,
Vascii_canon_table, 0,
0);
immediate_quit = 1;
immediate_quit = true;
val = re_search (bufp, string, len, 0, len, 0);
immediate_quit = 0;
immediate_quit = false;
return val;
}
@ -560,7 +561,7 @@ fast_looking_at (Lisp_Object regexp, ptrdiff_t pos, ptrdiff_t pos_byte,
}
buf = compile_pattern (regexp, 0, Qnil, 0, multibyte);
immediate_quit = 1;
immediate_quit = true;
#ifdef REL_ALLOC
/* Prevent ralloc.c from relocating the current buffer while
searching it. */
@ -571,7 +572,7 @@ fast_looking_at (Lisp_Object regexp, ptrdiff_t pos, ptrdiff_t pos_byte,
#ifdef REL_ALLOC
r_alloc_inhibit_buffer_relocation (0);
#endif
immediate_quit = 0;
immediate_quit = false;
return len;
}
@ -703,7 +704,7 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
ptrdiff_t next_change;
int result = 1;
immediate_quit = 0;
immediate_quit = false;
while (start < end && result)
{
ptrdiff_t lim1;
@ -809,7 +810,7 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
if (--count == 0)
{
immediate_quit = 0;
immediate_quit = false;
if (bytepos)
*bytepos = lim_byte + next;
return BYTE_TO_CHAR (lim_byte + next);
@ -832,7 +833,7 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
ptrdiff_t next_change;
int result = 1;
immediate_quit = 0;
immediate_quit = false;
while (start > end && result)
{
ptrdiff_t lim1;
@ -917,7 +918,7 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
if (++count >= 0)
{
immediate_quit = 0;
immediate_quit = false;
if (bytepos)
*bytepos = ceiling_byte + prev + 1;
return BYTE_TO_CHAR (ceiling_byte + prev + 1);
@ -929,7 +930,7 @@ find_newline (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
}
}
immediate_quit = 0;
immediate_quit = false;
if (shortage)
*shortage = count * direction;
if (bytepos)
@ -1196,10 +1197,10 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
trt, posix,
!NILP (BVAR (current_buffer, enable_multibyte_characters)));
immediate_quit = 1; /* Quit immediately if user types ^G,
immediate_quit = true; /* Quit immediately if user types ^G,
because letting this function finish
can take too long. */
QUIT; /* Do a pending quit right away,
maybe_quit (); /* Do a pending quit right away,
to avoid paradoxical behavior */
/* Get pointers and sizes of the two strings
that make up the visible portion of the buffer. */
@ -1267,7 +1268,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
}
else
{
immediate_quit = 0;
immediate_quit = false;
#ifdef REL_ALLOC
r_alloc_inhibit_buffer_relocation (0);
#endif
@ -1312,7 +1313,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
}
else
{
immediate_quit = 0;
immediate_quit = false;
#ifdef REL_ALLOC
r_alloc_inhibit_buffer_relocation (0);
#endif
@ -1320,7 +1321,7 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
}
n--;
}
immediate_quit = 0;
immediate_quit = false;
#ifdef REL_ALLOC
r_alloc_inhibit_buffer_relocation (0);
#endif
@ -1927,7 +1928,7 @@ boyer_moore (EMACS_INT n, unsigned char *base_pat,
< 0)
return (n * (0 - direction));
/* First we do the part we can by pointers (maybe nothing) */
QUIT;
maybe_quit ();
pat = base_pat;
limit = pos_byte - dirlen + direction;
if (direction > 0)
@ -3274,7 +3275,7 @@ find_newline1 (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
if (--count == 0)
{
immediate_quit = 0;
immediate_quit = false;
if (bytepos)
*bytepos = lim_byte + next;
return BYTE_TO_CHAR (lim_byte + next);
@ -3286,7 +3287,7 @@ find_newline1 (ptrdiff_t start, ptrdiff_t start_byte, ptrdiff_t end,
}
}
immediate_quit = 0;
immediate_quit = false;
if (shortage)
*shortage = count;
if (bytepos)

View file

@ -1426,8 +1426,8 @@ scan_words (register ptrdiff_t from, register EMACS_INT count)
int ch0, ch1;
Lisp_Object func, pos;
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
SETUP_SYNTAX_TABLE (from, count);
@ -1437,7 +1437,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count)
{
if (from == end)
{
immediate_quit = 0;
immediate_quit = false;
return 0;
}
UPDATE_SYNTAX_TABLE_FORWARD (from);
@ -1487,7 +1487,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count)
{
if (from == beg)
{
immediate_quit = 0;
immediate_quit = false;
return 0;
}
DEC_BOTH (from, from_byte);
@ -1536,7 +1536,7 @@ scan_words (register ptrdiff_t from, register EMACS_INT count)
count++;
}
immediate_quit = 0;
immediate_quit = false;
return from;
}
@ -1921,7 +1921,7 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim,
stop = (pos >= GPT && GPT > XINT (lim)) ? GAP_END_ADDR : endp;
}
immediate_quit = 1;
immediate_quit = true;
/* This code may look up syntax tables using functions that rely on the
gl_state object. To make sure this object is not out of date,
let's initialize it manually.
@ -2064,7 +2064,7 @@ skip_chars (bool forwardp, Lisp_Object string, Lisp_Object lim,
}
SET_PT_BOTH (pos, pos_byte);
immediate_quit = 0;
immediate_quit = false;
SAFE_FREE ();
return make_number (PT - start_point);
@ -2138,7 +2138,7 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim)
ptrdiff_t pos_byte = PT_BYTE;
unsigned char *p, *endp, *stop;
immediate_quit = 1;
immediate_quit = true;
SETUP_SYNTAX_TABLE (pos, forwardp ? 1 : -1);
if (forwardp)
@ -2224,7 +2224,7 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim)
done:
SET_PT_BOTH (pos, pos_byte);
immediate_quit = 0;
immediate_quit = false;
return make_number (PT - start_point);
}
@ -2412,8 +2412,8 @@ between them, return t; otherwise return nil. */)
count1 = XINT (count);
stop = count1 > 0 ? ZV : BEGV;
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
from = PT;
from_byte = PT_BYTE;
@ -2429,7 +2429,7 @@ between them, return t; otherwise return nil. */)
if (from == stop)
{
SET_PT_BOTH (from, from_byte);
immediate_quit = 0;
immediate_quit = false;
return Qnil;
}
c = FETCH_CHAR_AS_MULTIBYTE (from_byte);
@ -2463,7 +2463,7 @@ between them, return t; otherwise return nil. */)
comstyle = ST_COMMENT_STYLE;
else if (code != Scomment)
{
immediate_quit = 0;
immediate_quit = false;
DEC_BOTH (from, from_byte);
SET_PT_BOTH (from, from_byte);
return Qnil;
@ -2474,7 +2474,7 @@ between them, return t; otherwise return nil. */)
from = out_charpos; from_byte = out_bytepos;
if (!found)
{
immediate_quit = 0;
immediate_quit = false;
SET_PT_BOTH (from, from_byte);
return Qnil;
}
@ -2494,7 +2494,7 @@ between them, return t; otherwise return nil. */)
if (from <= stop)
{
SET_PT_BOTH (BEGV, BEGV_BYTE);
immediate_quit = 0;
immediate_quit = false;
return Qnil;
}
@ -2587,7 +2587,7 @@ between them, return t; otherwise return nil. */)
else if (code != Swhitespace || quoted)
{
leave:
immediate_quit = 0;
immediate_quit = false;
INC_BOTH (from, from_byte);
SET_PT_BOTH (from, from_byte);
return Qnil;
@ -2598,7 +2598,7 @@ between them, return t; otherwise return nil. */)
}
SET_PT_BOTH (from, from_byte);
immediate_quit = 0;
immediate_quit = false;
return Qt;
}
@ -2640,8 +2640,8 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag)
from_byte = CHAR_TO_BYTE (from);
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
SETUP_SYNTAX_TABLE (from, count);
while (count > 0)
@ -2801,7 +2801,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag)
if (depth)
goto lose;
immediate_quit = 0;
immediate_quit = false;
return Qnil;
/* End of object reached */
@ -2984,7 +2984,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag)
if (depth)
goto lose;
immediate_quit = 0;
immediate_quit = false;
return Qnil;
done2:
@ -2992,7 +2992,7 @@ scan_lists (EMACS_INT from, EMACS_INT count, EMACS_INT depth, bool sexpflag)
}
immediate_quit = 0;
immediate_quit = false;
XSETFASTINT (val, from);
return val;
@ -3173,8 +3173,8 @@ do { prev_from = from; \
UPDATE_SYNTAX_TABLE_FORWARD (from); \
} while (0)
immediate_quit = 1;
QUIT;
immediate_quit = true;
maybe_quit ();
depth = state->depth;
start_quoted = state->quoted;
@ -3432,7 +3432,7 @@ do { prev_from = from; \
state->levelstarts);
state->prev_syntax = (SYNTAX_FLAGS_COMSTARTEND_FIRST (prev_from_syntax)
|| state->quoted) ? prev_from_syntax : Smax;
immediate_quit = 0;
immediate_quit = false;
}
/* Convert a (lisp) parse state to the internal form used in

View file

@ -391,10 +391,10 @@ get_child_status (pid_t child, int *status, int options, bool interruptible)
if (errno != EINTR)
emacs_abort ();
/* Note: the MS-Windows emulation of waitpid calls QUIT
/* Note: the MS-Windows emulation of waitpid calls maybe_quit
internally. */
if (interruptible)
QUIT;
maybe_quit ();
}
/* If successful and status is requested, tell wait_reading_process_output
@ -2383,7 +2383,7 @@ emacs_open (const char *file, int oflags, int mode)
oflags |= O_BINARY;
oflags |= O_CLOEXEC;
while ((fd = open (file, oflags, mode)) < 0 && errno == EINTR)
QUIT;
maybe_quit ();
if (! O_CLOEXEC && 0 <= fd)
fcntl (fd, F_SETFD, FD_CLOEXEC);
return fd;
@ -2516,7 +2516,7 @@ emacs_read (int fildes, void *buf, ptrdiff_t nbyte)
while ((rtnval = read (fildes, buf, nbyte)) == -1
&& (errno == EINTR))
QUIT;
maybe_quit ();
return (rtnval);
}
@ -2538,7 +2538,7 @@ emacs_full_write (int fildes, char const *buf, ptrdiff_t nbyte,
{
if (errno == EINTR)
{
/* I originally used `QUIT' but that might cause files to
/* I originally used maybe_quit but that might cause files to
be truncated if you hit C-g in the middle of it. --Stef */
if (process_signals && pending_signals)
process_pending_signals ();

View file

@ -211,7 +211,7 @@ validate_plist (Lisp_Object list)
if (! CONSP (tail))
error ("Odd length text property list");
tail = XCDR (tail);
QUIT;
maybe_quit ();
}
while (CONSP (tail));

View file

@ -778,7 +778,7 @@ w32_color_map_lookup (const char *colorname)
break;
}
QUIT;
maybe_quit ();
}
unblock_input ();
@ -3166,7 +3166,7 @@ signal_user_input (void)
if (!NILP (Vthrow_on_input))
{
Vquit_flag = Vthrow_on_input;
/* Doing a QUIT from this thread is a bad idea, since this
/* Calling maybe_quit from this thread is a bad idea, since this
unwinds the stack of the Lisp thread, and the Windows runtime
rightfully barfs. Disabled. */
#if 0
@ -3174,8 +3174,8 @@ signal_user_input (void)
do it now. */
if (immediate_quit && NILP (Vinhibit_quit))
{
immediate_quit = 0;
QUIT;
immediate_quit = false;
maybe_quit ();
}
#endif
}

View file

@ -664,7 +664,7 @@ w32_get_watch_object (void *desc)
Lisp_Object descriptor = make_pointer_integer (desc);
/* This is called from the input queue handling code, inside a
critical section, so we cannot possibly QUIT if watch_list is not
critical section, so we cannot possibly quit if watch_list is not
in the right condition. */
return NILP (watch_list) ? Qnil : assoc_no_quit (descriptor, watch_list);
}

View file

@ -1449,7 +1449,7 @@ waitpid (pid_t pid, int *status, int options)
do
{
QUIT;
maybe_quit ();
active = WaitForMultipleObjects (nh, wait_hnd, FALSE, timeout_ms);
} while (active == WAIT_TIMEOUT && !dont_wait);

View file

@ -521,9 +521,10 @@ select_window (Lisp_Object window, Lisp_Object norecord,
bset_last_selected_window (XBUFFER (w->contents), window);
record_and_return:
/* record_buffer can run QUIT, so make sure it is run only after we have
re-established the invariant between selected_window and selected_frame,
otherwise the temporary broken invariant might "escape" (bug#14161). */
/* record_buffer can call maybe_quit, so make sure it is run only
after we have re-established the invariant between
selected_window and selected_frame, otherwise the temporary
broken invariant might "escape" (Bug#14161). */
if (NILP (norecord))
{
w->use_time = ++window_select_count;

View file

@ -22635,7 +22635,7 @@ move_elt_to_front (Lisp_Object elt, Lisp_Object list)
else
prev = tail;
tail = XCDR (tail);
QUIT;
maybe_quit ();
}
/* Not found--return unchanged LIST. */

View file

@ -329,7 +329,7 @@ x_own_selection (Lisp_Object selection_name, Lisp_Object selection_value,
Fcons (selection_data, dpyinfo->terminal->Vselection_alist));
/* If we already owned the selection, remove the old selection
data. Don't use Fdelq as that may QUIT. */
data. Don't use Fdelq as that may quit. */
if (!NILP (prev_value))
{
/* We know it's not the CAR, so it's easy. */
@ -929,7 +929,7 @@ x_handle_selection_clear (struct selection_input_event *event)
&& local_selection_time > changed_owner_time)
return;
/* Otherwise, really clear. Don't use Fdelq as that may QUIT;. */
/* Otherwise, really clear. Don't use Fdelq as that may quit. */
Vselection_alist = dpyinfo->terminal->Vselection_alist;
if (EQ (local_selection_data, CAR (Vselection_alist)))
Vselection_alist = XCDR (Vselection_alist);

View file

@ -635,7 +635,7 @@ x_cr_export_frames (Lisp_Object frames, cairo_surface_type_t surface_type)
(*surface_set_size_func) (surface, width, height);
unblock_input ();
QUIT;
maybe_quit ();
block_input ();
}