diff options
Diffstat (limited to 'lib/Support')
| -rw-r--r-- | lib/Support/Unix/Path.inc | 6 | ||||
| -rw-r--r-- | lib/Support/Unix/Process.inc | 5 | 
2 files changed, 8 insertions, 3 deletions
| diff --git a/lib/Support/Unix/Path.inc b/lib/Support/Unix/Path.inc index 7ad57d892ff1..b4279d4fcc0c 100644 --- a/lib/Support/Unix/Path.inc +++ b/lib/Support/Unix/Path.inc @@ -769,8 +769,10 @@ std::error_code openFile(const Twine &Name, int &ResultFD,    SmallString<128> Storage;    StringRef P = Name.toNullTerminatedStringRef(Storage); -  if ((ResultFD = sys::RetryAfterSignal(-1, ::open, P.begin(), OpenFlags, Mode)) < -      0) +  // Call ::open in a lambda to avoid overload resolution in RetryAfterSignal +  // when open is overloaded, such as in Bionic. +  auto Open = [&]() { return ::open(P.begin(), OpenFlags, Mode); }; +  if ((ResultFD = sys::RetryAfterSignal(-1, Open)) < 0)      return std::error_code(errno, std::generic_category());  #ifndef O_CLOEXEC    if (!(Flags & OF_ChildInherit)) { diff --git a/lib/Support/Unix/Process.inc b/lib/Support/Unix/Process.inc index fa515d44f3f2..3185f45a3a61 100644 --- a/lib/Support/Unix/Process.inc +++ b/lib/Support/Unix/Process.inc @@ -211,7 +211,10 @@ std::error_code Process::FixupStandardFileDescriptors() {      assert(errno == EBADF && "expected errno to have EBADF at this point!");      if (NullFD < 0) { -      if ((NullFD = RetryAfterSignal(-1, ::open, "/dev/null", O_RDWR)) < 0) +      // Call ::open in a lambda to avoid overload resolution in +      // RetryAfterSignal when open is overloaded, such as in Bionic. +      auto Open = [&]() { return ::open("/dev/null", O_RDWR); }; +      if ((NullFD = RetryAfterSignal(-1, Open)) < 0)          return std::error_code(errno, std::generic_category());      } | 
