Fixed a problem where the "this" pointer didn't
have the correct value in the IRInterpreter.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@143663 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Expression/ClangExpressionDeclMap.cpp b/source/Expression/ClangExpressionDeclMap.cpp
index fdbb25d..d809416 100644
--- a/source/Expression/ClangExpressionDeclMap.cpp
+++ b/source/Expression/ClangExpressionDeclMap.cpp
@@ -1038,6 +1038,23 @@
     
     std::auto_ptr<Value> value(GetVariableValue(*m_parser_vars->m_exe_ctx, var, NULL));
     
+    if (value.get() && value->GetValueType() == Value::eValueTypeLoadAddress)
+    {
+        Process *process = m_parser_vars->m_exe_ctx->GetProcessPtr();
+        
+        if (!process)
+            return Value();
+        
+        lldb::addr_t value_addr = value->GetScalar().ULongLong();
+        Error read_error;
+        addr_t ptr_value = process->ReadPointerFromMemory (value_addr, read_error);
+        
+        if (!read_error.Success())
+            return Value();
+        
+        value->GetScalar() = (unsigned long long)ptr_value;
+    }
+    
     if (value.get())
         return *value;
     else