From: Tassilo Horn <tsdh@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: michael.albinus@gmx.de, 21313@debbugs.gnu.org
Subject: bug#21313: 25.0.50; Strange errors from dbus-handle-event
Date: Fri, 16 Oct 2015 09:45:08 +0200 [thread overview]
Message-ID: <871tcv5kaj.fsf@gnu.org> (raw)
In-Reply-To: <83pp0f70un.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 16 Oct 2015 10:02:08 +0300")
Eli Zaretskii <eliz@gnu.org> writes:
>> > I think I found the problem: the call to Fformat eventually calls
>> > print_object, which calls QUIT, which resets quit-flag.
>>
>> I've seen it now. Well, that's not what I would have expected.
>
> You should expect any potentially prolonged operation to call QUIT
> somewhere in its loop. That's standard Emacs coding practice, meant
> to make Emacs more responsive.
Ok, so QUIT; in C code basically means, here is a position where the
current lisp execution could be aborted. If it weren't in
print_object(), then you couldn't for example abort printing a list with
gazillions of elements and emacs would get stuck while doing so.
Looking at QUIT, the difference between my original code and the new one
is just when process_quit_flag() is called. process_quit_flag() always
signals quit. So with the new code, the signal is handled by the right
recipient. Who consumed (and discarded) it before?
Well, I think I just remember that I want to bind Qinhibit_quit to Qt
whenever I need to call Lisp functions from C.
>> > 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);
>>
>> Yes, that works. So that's the C version of (let ((inhibit-quit t))
>> ...). So specbind creates a dynamic binding, and with unbind_to you
>> pop entries up to a given index again, right?
>
> Yes. See Flet (modulo the clutter) for a definitive evidence.
>
> (Btw, unwind-protect is implemented using the same mechanism in C.)
Seen that, thanks!
Bye,
Tassilo
next prev parent reply other threads:[~2015-10-16 7:45 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-21 16:24 bug#21313: 25.0.50; Strange errors from dbus-handle-event Tassilo Horn
2015-09-09 20:43 ` Tassilo Horn
2015-09-11 12:28 ` Tassilo Horn
2015-09-11 12:39 ` Eli Zaretskii
2015-09-11 13:06 ` Tassilo Horn
2015-09-11 13:59 ` Eli Zaretskii
2015-09-15 15:37 ` Tassilo Horn
2015-09-15 16:01 ` Eli Zaretskii
2015-09-16 11:39 ` Tassilo Horn
2015-09-22 5:49 ` Tassilo Horn
2015-09-22 8:00 ` Robert Pluim
2015-09-22 8:21 ` Tassilo Horn
2015-10-02 18:36 ` Tassilo Horn
2015-10-02 19:05 ` Eli Zaretskii
2015-10-02 20:33 ` Tassilo Horn
2015-10-02 21:10 ` Eli Zaretskii
2015-10-02 21:26 ` Michael Albinus
2015-10-03 5:40 ` Tassilo Horn
2015-10-03 6:32 ` Tassilo Horn
2015-10-03 7:14 ` Eli Zaretskii
2015-10-03 8:10 ` Tassilo Horn
2015-10-03 9:53 ` Eli Zaretskii
2015-10-03 12:06 ` Tassilo Horn
2015-10-03 7:43 ` Michael Albinus
2015-10-03 8:13 ` Tassilo Horn
2015-10-03 9:38 ` Tassilo Horn
2015-10-03 10:53 ` Eli Zaretskii
2015-10-14 9:58 ` Tassilo Horn
2015-10-14 17:05 ` Eli Zaretskii
2015-10-14 19:37 ` Tassilo Horn
2015-10-14 19:43 ` Eli Zaretskii
2015-10-15 11:37 ` Tassilo Horn
2015-10-15 16:56 ` Eli Zaretskii
2015-10-15 17:35 ` Tassilo Horn
2015-10-15 19:44 ` Eli Zaretskii
2015-10-16 4:53 ` Tassilo Horn
2015-10-16 7:02 ` Eli Zaretskii
2015-10-16 7:45 ` Tassilo Horn [this message]
2015-10-16 8:23 ` Eli Zaretskii
2015-10-16 9:25 ` Tassilo Horn
2015-10-16 10:11 ` Eli Zaretskii
2015-10-16 10:22 ` Tassilo Horn
2015-10-29 7:43 ` Tassilo Horn
2015-10-29 16:19 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871tcv5kaj.fsf@gnu.org \
--to=tsdh@gnu.org \
--cc=21313@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=michael.albinus@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.