diff options
author | Zachary Turner <zturner@google.com> | 2016-11-02 17:42:12 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2016-11-02 17:42:12 +0000 |
commit | 046bbafdf28e1958a2e27cf28ddd540721c5597c (patch) | |
tree | 3ee3d06acef0432b631e7a4a209e0f7c6521527a | |
parent | 5d9d417a082b33d39183c566dc58358b5d7b905a (diff) | |
download | bcm5719-llvm-046bbafdf28e1958a2e27cf28ddd540721c5597c.tar.gz bcm5719-llvm-046bbafdf28e1958a2e27cf28ddd540721c5597c.zip |
Fix crash in PseudoTerminal on Windows.
Patch by Rudy Pons
Differential Revision: https://reviews.llvm.org/D25681
llvm-svn: 285843
-rw-r--r-- | lldb/source/Utility/PseudoTerminal.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lldb/source/Utility/PseudoTerminal.cpp b/lldb/source/Utility/PseudoTerminal.cpp index 555dcf1a01d..5c320c2d4b3 100644 --- a/lldb/source/Utility/PseudoTerminal.cpp +++ b/lldb/source/Utility/PseudoTerminal.cpp @@ -50,11 +50,7 @@ PseudoTerminal::~PseudoTerminal() { //---------------------------------------------------------------------- void PseudoTerminal::CloseMasterFileDescriptor() { if (m_master_fd >= 0) { -// Don't call 'close' on m_master_fd for Windows as a dummy implementation of -// posix_openpt above always gives it a 0 value. -#ifndef _WIN32 ::close(m_master_fd); -#endif m_master_fd = invalid_fd; } } @@ -81,13 +77,14 @@ void PseudoTerminal::CloseSlaveFileDescriptor() { // file descriptor after this object is out of scope or destroyed. // // RETURNS: -// Zero when successful, non-zero indicating an error occurred. +// True when successful, false indicating an error occurred. //---------------------------------------------------------------------- bool PseudoTerminal::OpenFirstAvailableMaster(int oflag, char *error_str, size_t error_len) { if (error_str) error_str[0] = '\0'; +#if !defined(LLDB_DISABLE_POSIX) // Open the master side of a pseudo terminal m_master_fd = ::posix_openpt(oflag); if (m_master_fd < 0) { @@ -113,6 +110,12 @@ bool PseudoTerminal::OpenFirstAvailableMaster(int oflag, char *error_str, } return true; +#else + if (error_str) + ::snprintf(error_str, error_len, "%s", + "pseudo terminal not supported"); + return false; +#endif } //---------------------------------------------------------------------- @@ -124,7 +127,7 @@ bool PseudoTerminal::OpenFirstAvailableMaster(int oflag, char *error_str, // ReleaseSlaveFileDescriptor() member function. // // RETURNS: -// Zero when successful, non-zero indicating an error occurred. +// True when successful, false indicating an error occurred. //---------------------------------------------------------------------- bool PseudoTerminal::OpenSlave(int oflag, char *error_str, size_t error_len) { if (error_str) |