[Lldb-commits] [PATCH] D26403: Display the pointer value in the libstdc++ unique_ptr summary

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Wed Nov 9 02:51:24 PST 2016


labath added inline comments.


================
Comment at: source/Plugins/Language/CPlusPlus/LibStdcppUniquePointer.cpp:129
 
   if (m_ptr_obj->GetValueAsUnsigned(0) == 0) {
     stream.Printf("nullptr");
----------------
granata.enrico wrote:
> This is very nitpick-y but why not
> 
> lldb::addr_t ptr_value = m_ptr_obj->GetValueAsUnsigned(LLDB_INVALID_ADDRESS)
> switch (ptr_value) {
>   case 0: stream.Printf("nullptr"); break;
>   case LLDB_INVALID_ADDRESS: return false;
>   default: stream.Printf("0x%" PRIx64, ptr_value); break;
> }
> 
> modulo clang-formatting the above, of course.
>     
I've changed this to:
```
  uint64_t ptr_value = m_ptr_obj->GetValueAsUnsigned(0, &success);
  if (!success)
    return false;
  if (ptr_value == 0)
    stream.Printf("nullptr");
  else
    stream.Printf("0x%" PRIx64, ptr_value);
```
This should address the issue of not printing a bogus value if we fail to read the value, but avoid the case where the pointer value *is* 0xffff.. (which it can legitimately be, e.g. with custom deleters, or if the inferior corrupts it's memory).
At that point, the switch is not necessary.


https://reviews.llvm.org/D26403





More information about the lldb-commits mailing list