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’.