hurd fcntl: Make LOCKED macro more robust
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Mon, 2 Jan 2023 00:54:18 +0000 (01:54 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Mon, 2 Jan 2023 10:36:11 +0000 (11:36 +0100)
sysdeps/mach/hurd/fcntl.c

index ea35e9b..4860849 100644 (file)
@@ -109,7 +109,7 @@ __libc_fcntl (int fd, int cmd, ...)
 
       /* Set RESULT by evaluating EXPR with the descriptor locked.
         Check for an empty descriptor and return EBADF.  */
-#define LOCKED(expr)                                                         \
+#define LOCKED(expr) do {                                                    \
       HURD_CRITICAL_BEGIN;                                                   \
       __spin_lock (&d->port.lock);                                           \
       if (d->port.port == MACH_PORT_NULL)                                    \
@@ -117,7 +117,8 @@ __libc_fcntl (int fd, int cmd, ...)
       else                                                                   \
        result = (expr);                                                      \
       __spin_unlock (&d->port.lock);                                         \
-      HURD_CRITICAL_END;
+      HURD_CRITICAL_END;                                                     \
+} while(0)
 
     case F_GETFD:              /* Get descriptor flags.  */
       LOCKED (d->flags);