summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2020-05-14 08:50:39 -0400
committerNat Goodspeed <nat@lindenlab.com>2020-05-14 08:50:39 -0400
commit6e5242f0a4e8a2e9cd9f21e89fae4870d1acceca (patch)
tree783d947e13ed6c871228a71d42fb5d26b9c38fbe
parent066fb5dafce71acc93bb04f2a271b43870a6b0bb (diff)
DRTVWR-476: Fix LLError::Log::classname(T*) template function.
First, the signature classname(const T*) was wrong: that function could only accept a pointer to const T. The expression classname(someptr) where someptr was a pointer to non-const SomeType displayed "SomeType*" because it could only match classname(const T&), where T was SomeType*. classname(T* const) is what we should have written, meaning "const pointer to T" rather than "pointer to const T." Second, the previous implementation failed to handle the case in which the pointer was nullptr.
-rw-r--r--indra/llcommon/llerror.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h
index 3cdd051ac7..ffaa464d77 100644
--- a/indra/llcommon/llerror.h
+++ b/indra/llcommon/llerror.h
@@ -207,7 +207,7 @@ namespace LLError
static std::string classname() { return demangle(typeid(T).name()); }
/// classname(some_pointer)
template <typename T>
- static std::string classname(const T* ptr) { return demangle(typeid(*ptr).name()); }
+ static std::string classname(T* const ptr) { return ptr? demangle(typeid(*ptr).name()) : "nullptr"; }
/// classname(some_reference)
template <typename T>
static std::string classname(const T& obj) { return demangle(typeid(obj).name()); }