summaryrefslogtreecommitdiffstats
path: root/lldb/source/API/SBSymbolContext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/API/SBSymbolContext.cpp')
-rw-r--r--lldb/source/API/SBSymbolContext.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/lldb/source/API/SBSymbolContext.cpp b/lldb/source/API/SBSymbolContext.cpp
index 4381994c70f..ecd7d6677ff 100644
--- a/lldb/source/API/SBSymbolContext.cpp
+++ b/lldb/source/API/SBSymbolContext.cpp
@@ -32,7 +32,12 @@ SBSymbolContext::SBSymbolContext (const SBSymbolContext& rhs) :
m_opaque_ap ()
{
if (rhs.IsValid())
- *m_opaque_ap = *rhs.m_opaque_ap;
+ {
+ if (m_opaque_ap.get())
+ *m_opaque_ap = *rhs.m_opaque_ap;
+ else
+ ref() = *rhs.m_opaque_ap;
+ }
}
SBSymbolContext::~SBSymbolContext ()
@@ -141,6 +146,14 @@ SBSymbolContext::operator*()
return *m_opaque_ap.get();
}
+lldb_private::SymbolContext&
+SBSymbolContext::ref()
+{
+ if (m_opaque_ap.get() == NULL)
+ m_opaque_ap.reset (new SymbolContext);
+ return *m_opaque_ap.get();
+}
+
lldb_private::SymbolContext *
SBSymbolContext::get() const
{
@@ -152,6 +165,7 @@ SBSymbolContext::GetDescription (SBStream &description)
{
if (m_opaque_ap.get())
{
+ description.ref();
m_opaque_ap->GetDescription (description.get(), lldb::eDescriptionLevelFull, NULL);
}
else
@@ -159,12 +173,3 @@ SBSymbolContext::GetDescription (SBStream &description)
return true;
}
-
-PyObject *
-SBSymbolContext::__repr__ ()
-{
- SBStream description;
- description.ref();
- GetDescription (description);
- return PyString_FromString (description.GetData());
-}
OpenPOWER on IntegriCloud