diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2020-05-14 08:50:39 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2020-05-14 08:50:39 -0400 |
commit | 6e5242f0a4e8a2e9cd9f21e89fae4870d1acceca (patch) | |
tree | 783d947e13ed6c871228a71d42fb5d26b9c38fbe | |
parent | 066fb5dafce71acc93bb04f2a271b43870a6b0bb (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.h | 2 |
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()); } |