Subject: Re: bug#21313: 25.0.50; Strange errors from dbus-handle-event

From: Eli Zaretskii <[email-masked]>
Date: Thu, 15 Oct 2015 22:44:45 +0300

> From: Tassilo Horn <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Thu, 15 Oct 2015 19:35:31 +0200
> 
> > Or it could be that some code that runs as result of this throws to
> > higher level and resets the quit flag.
> 
> But how could a GC (or maybe just some small slowdown induced by
> printing) reset the quit flag?

It can't, and that's not what I meant.

I think I found the problem: the call to Fformat eventually calls
print_object, which calls QUIT, which resets quit-flag.

So you need to change the beginning of read_char like this:

  ptrdiff_t count = SPECPDL_INDEX ();
  specbind (Qinhibit_quit, Qt);
  AUTO_STRING (format, "%S");
  printf ("record_char: %s\n", SSDATA (CALLN (Fformat, format, c)));
  unbind_to (count, Qnil);