guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

SCM_SYSCALL


From: Ludovic Courtès
Subject: SCM_SYSCALL
Date: Sun, 23 Jun 2013 23:25:10 +0200
User-agent: Gnus/5.130007 (Ma Gnus v0.7) Emacs/24.3 (gnu/linux)

Hello Guilers!

We have this (since 2010):

--8<---------------cut here---------------start------------->8---
#   define SCM_SYSCALL(line)                    \
  do                                            \
    {                                           \
      errno = 0;                                \
      line;                                     \
      if (errno == EINTR)                       \
        {                                       \
          SCM_ASYNC_TICK;                       \
          continue;                             \
        }                                       \
    }                                           \
  while(0)
--8<---------------cut here---------------end--------------->8---

It turns out that the effect upon EINTR is to leave the loop.  So
typically, fport_fill_input just throws to system-error and reveals the
EINTR, contrary to SCM_SYSCALL intends to do.

This is easily fixed, but the question is whether this would affect
users in bad ways.  For example, applications might be relying on the
ability to do

  (catch 'system-error
    ...
    (lambda args
      (if (= EINTR (system-error-errno args))
          ...)))

Should the fix be delayed until 2.2?
WDYT?

Ludo’.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]