diff options
-rw-r--r-- | lldb/include/lldb/API/SBCommandReturnObject.h | 10 | ||||
-rw-r--r-- | lldb/scripts/interface/SBCommandReturnObject.i | 16 | ||||
-rw-r--r-- | lldb/source/API/SBCommandReturnObject.cpp | 18 |
3 files changed, 35 insertions, 9 deletions
diff --git a/lldb/include/lldb/API/SBCommandReturnObject.h b/lldb/include/lldb/API/SBCommandReturnObject.h index b45eb9c14c0..2b7cce5ded5 100644 --- a/lldb/include/lldb/API/SBCommandReturnObject.h +++ b/lldb/include/lldb/API/SBCommandReturnObject.h @@ -83,7 +83,9 @@ public: bool GetDescription (lldb::SBStream &description); - + + // deprecated, these two functions do not take + // ownership of file handle void SetImmediateOutputFile (FILE *fh); @@ -91,6 +93,12 @@ public: SetImmediateErrorFile (FILE *fh); void + SetImmediateOutputFile (FILE *fh, bool transfer_ownership); + + void + SetImmediateErrorFile (FILE *fh, bool transfer_ownership); + + void PutCString(const char* string, int len = -1); size_t diff --git a/lldb/scripts/interface/SBCommandReturnObject.i b/lldb/scripts/interface/SBCommandReturnObject.i index 5ade97bebfe..ae32b79b583 100644 --- a/lldb/scripts/interface/SBCommandReturnObject.i +++ b/lldb/scripts/interface/SBCommandReturnObject.i @@ -84,11 +84,17 @@ public: bool GetDescription (lldb::SBStream &description); - void - SetImmediateOutputFile (FILE *fh); - - void - SetImmediateErrorFile (FILE *fh); + + // wrapping here so that lldb takes ownership of the + // new FILE* created inside of the swig interface + %extend { + void SetImmediateOutputFile(FILE *fh) { + self->SetImmediateOutputFile(fh, true); + } + void SetImmediateErrorFile(FILE *fh) { + self->SetImmediateErrorFile(fh, true); + } + } void PutCString(const char* string, int len); diff --git a/lldb/source/API/SBCommandReturnObject.cpp b/lldb/source/API/SBCommandReturnObject.cpp index a2ed4d6e8c2..a7bc31da8a8 100644 --- a/lldb/source/API/SBCommandReturnObject.cpp +++ b/lldb/source/API/SBCommandReturnObject.cpp @@ -258,15 +258,27 @@ SBCommandReturnObject::GetDescription (SBStream &description) void SBCommandReturnObject::SetImmediateOutputFile(FILE *fh) { - if (m_opaque_ap) - m_opaque_ap->SetImmediateOutputFile(fh); + SetImmediateOutputFile(fh, false); } void SBCommandReturnObject::SetImmediateErrorFile(FILE *fh) { + SetImmediateErrorFile(fh, false); +} + +void +SBCommandReturnObject::SetImmediateOutputFile(FILE *fh, bool transfer_ownership) +{ + if (m_opaque_ap) + m_opaque_ap->SetImmediateOutputFile(fh, transfer_ownership); +} + +void +SBCommandReturnObject::SetImmediateErrorFile(FILE *fh, bool transfer_ownership) +{ if (m_opaque_ap) - m_opaque_ap->SetImmediateErrorFile(fh); + m_opaque_ap->SetImmediateErrorFile(fh, transfer_ownership); } void |