1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-23 04:50:28 +02:00

Fix 'SCM_SYSCALL' to really swallow EINTR.

* libguile/_scm.h (SCM_SYSCALL): Keep looping upon EINTR.
  Reported at
  <http://lists.gnu.org/archive/html/guile-devel/2013-06/msg00050.html>.
This commit is contained in:
Ludovic Courtès 2013-07-17 17:57:43 +02:00
parent e472f65245
commit fe51c7b3e0

View file

@ -3,7 +3,8 @@
#ifndef SCM__SCM_H
#define SCM__SCM_H
/* Copyright (C) 1995,1996,2000,2001, 2002, 2006, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
/* Copyright (C) 1995, 1996, 2000, 2001, 2002, 2006, 2008, 2009, 2010,
* 2011, 2013 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@ -98,13 +99,12 @@
{ \
errno = 0; \
line; \
if (EVMSERR==errno && (vaxc$errno>>3)==(SS$_CONTROLC>>3)) \
{ \
if (EVMSERR == errno && (vaxc$errno>>3)==(SS$_CONTROLC>>3)) \
SCM_ASYNC_TICK; \
continue; \
else \
break; \
} \
} \
while(0)
while (1)
# endif /* ndef __GNUC__ */
#endif /* def vms */
#endif /* ndef SCM_SYSCALL */
@ -120,10 +120,10 @@
if (errno == EINTR) \
{ \
SCM_ASYNC_TICK; \
continue; \
errno = EINTR; \
} \
} \
while(0)
while (errno == EINTR)
# endif /* (EINTR > 0) */
# endif /* def EINTR */
#endif /* ndef SCM_SYSCALL */