Author: jdevlieghere Date: Mon Sep 23 12:34:26 2019 New Revision: 372644 URL: http://llvm.org/viewvc/llvm-project?rev=372644&view=rev Log: [Host] File::GetWaitableHandle() should call fileno()
If the file has m_stream, it may not have a m_descriptor. GetWaitableHandle() should call GetDescriptor(), which will call fileno(), so it will get waitable descriptor whenever one is available. Patch by: Lawrence D'Anna Differential revision: https://reviews.llvm.org/D67789 Added: lldb/trunk/unittests/Host/FileTest.cpp Modified: lldb/trunk/source/Host/common/File.cpp lldb/trunk/unittests/Host/CMakeLists.txt Modified: lldb/trunk/source/Host/common/File.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/File.cpp?rev=372644&r1=372643&r2=372644&view=diff ============================================================================== --- lldb/trunk/source/Host/common/File.cpp (original) +++ lldb/trunk/source/Host/common/File.cpp Mon Sep 23 12:34:26 2019 @@ -91,7 +91,7 @@ int File::GetDescriptor() const { return kInvalidDescriptor; } -IOObject::WaitableHandle File::GetWaitableHandle() { return m_descriptor; } +IOObject::WaitableHandle File::GetWaitableHandle() { return GetDescriptor(); } void File::SetDescriptor(int fd, bool transfer_ownership) { if (IsValid()) Modified: lldb/trunk/unittests/Host/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Host/CMakeLists.txt?rev=372644&r1=372643&r2=372644&view=diff ============================================================================== --- lldb/trunk/unittests/Host/CMakeLists.txt (original) +++ lldb/trunk/unittests/Host/CMakeLists.txt Mon Sep 23 12:34:26 2019 @@ -2,6 +2,7 @@ set (FILES ConnectionFileDescriptorTest.cpp FileActionTest.cpp FileSystemTest.cpp + FileTest.cpp HostInfoTest.cpp HostTest.cpp MainLoopTest.cpp Added: lldb/trunk/unittests/Host/FileTest.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Host/FileTest.cpp?rev=372644&view=auto ============================================================================== --- lldb/trunk/unittests/Host/FileTest.cpp (added) +++ lldb/trunk/unittests/Host/FileTest.cpp Mon Sep 23 12:34:26 2019 @@ -0,0 +1,36 @@ +//===-- FileTest.cpp --------------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "lldb/Host/File.h" +#include "llvm/ADT/SmallString.h" +#include "llvm/Support/FileSystem.h" +#include "llvm/Support/FileUtilities.h" +#include "llvm/Support/Path.h" +#include "llvm/Support/Program.h" +#include "gtest/gtest.h" + +using namespace lldb; +using namespace lldb_private; + +TEST(File, GetWaitableHandleFileno) { + const auto *Info = testing::UnitTest::GetInstance()->current_test_info(); + + llvm::SmallString<128> name; + int fd; + llvm::sys::fs::createTemporaryFile(llvm::Twine(Info->test_case_name()) + "-" + + Info->name(), + "test", fd, name); + llvm::FileRemover remover(name); + ASSERT_GE(fd, 0); + + FILE *stream = fdopen(fd, "r"); + ASSERT_TRUE(stream); + + File file(stream, true); + EXPECT_EQ(file.GetWaitableHandle(), fd); +} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits