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



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

Reply via email to