summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/API/SBCommandReturnObject.h10
-rw-r--r--lldb/scripts/interface/SBCommandReturnObject.i16
-rw-r--r--lldb/source/API/SBCommandReturnObject.cpp18
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
OpenPOWER on IntegriCloud