Looks incorrect to me.  It was introduced with this change.  Adding Greg.

Author: Greg Clayton <gclay...@apple.com>
Date:   Fri Aug 27 21:47:54 2010 +0000

    Made it so we update the current frames from the previous frames by doing 
STL
    swaps on the variable list, value object list, and disassembly. This avoids
    us having to try and update frame indexes and other things that were getting
    out of sync.
    
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@112301 
91177308-0d34-0410-b5e6-96231b3b80d8



> On Nov 13, 2016, at 4:48 PM, Zachary Turner <ztur...@google.com> wrote:
> 
> I was going through doing some routine StringRef changes and I ran across 
> this function:
> 
>   std::lock_guard<std::recursive_mutex> guard(m_mutex);
>   assert(GetStackID() ==
>          prev_frame.GetStackID()); // TODO: remove this after some testing
>   m_variable_list_sp = prev_frame.m_variable_list_sp;
>   
> m_variable_list_value_objects.Swap(prev_frame.m_variable_list_value_objects);
>   if (!m_disassembly.GetString().empty()) {
>     m_disassembly.Clear();
>     m_disassembly.GetString().swap(m_disassembly.GetString());
>   }
> 
> Either I'm crazy or that bolded line is a bug.  Is it supposed to be 
> prev_frame.m_disassembly.GetString()?
> 
> What would the implications of this bug be?  i.e. how can we write a test for 
> this?
> 
> Also, as a matter of curiosity, why is it swapping?  That means it's 
> modifying the input frame, when it seems like it really should just be 
> modifying the current frame.

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to