[Lldb-commits] [PATCH] D25681: [PseudoTerminal] Fix PseudoTerminal MSVC release crash

Rudy Pons via lldb-commits lldb-commits at lists.llvm.org
Fri Oct 21 07:42:23 PDT 2016


Ilod updated this revision to Diff 75426.
Ilod added a comment.

Yeah, you're right, the previous code is used for reference was inconsistent here. Now I return false and set an error string. Also remove an hacky ifdef which was needed on previous implementation (because the master id was updated to 0), but now we leave it to -1, so it's not needed anymore.


https://reviews.llvm.org/D25681

Files:
  source/Utility/PseudoTerminal.cpp


Index: source/Utility/PseudoTerminal.cpp
===================================================================
--- source/Utility/PseudoTerminal.cpp
+++ source/Utility/PseudoTerminal.cpp
@@ -50,11 +50,7 @@
 //----------------------------------------------------------------------
 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 @@
 // 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 @@
   }
 
   return true;
+#else
+  if (error_str)
+    ::snprintf(error_str, error_len, "%s",
+               "pseudo terminal not supported");
+  return false;
+#endif
 }
 
 //----------------------------------------------------------------------
@@ -124,7 +127,7 @@
 // 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)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25681.75426.patch
Type: text/x-patch
Size: 1875 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20161021/5fcd52a2/attachment.bin>


More information about the lldb-commits mailing list