Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fcbc9619 authored by Andrei Homescu's avatar Andrei Homescu
Browse files

Fix TEMP_FAILURE_RETRY on non-GNU C++ dialects

TEMP_FAILURE_RETRY uses typeof which is only allowed by gcc and clang
for GNU dialects. This switches to __typeof__ which is always supported.

Bug: 224644083
Test: m
Change-Id: I96d48d2f0dc5cd9ab903755d93c71c4eb80f7529
parent aa4ebf2c
Loading
Loading
Loading
Loading
+9 −11
Original line number Diff line number Diff line
@@ -71,19 +71,17 @@ static inline int ftruncate64(int fd, off64_t length) {
#define CONSTEXPR
#endif

/*
 * TEMP_FAILURE_RETRY is defined by some, but not all, versions of
 * <unistd.h>. (Alas, it is not as standard as we'd hoped!) So, if it's
 * not already defined, then define it here.
 */
/* TEMP_FAILURE_RETRY is not available on macOS, but still useful there. */
#ifndef TEMP_FAILURE_RETRY
/* Used to retry syscalls that can return EINTR. */
#define TEMP_FAILURE_RETRY(exp) ({         \
    typeof (exp) _rc;                      \
#define TEMP_FAILURE_RETRY(exp)                \
    ({                                         \
        __typeof__(exp) _rc;                   \
        do {                                   \
            _rc = (exp);                       \
        } while (_rc == -1 && errno == EINTR); \
    _rc; })
        _rc;                                   \
    })
#endif

#if defined(_WIN32)