diff --git a/indra/llcommon/llpointer.h b/indra/llcommon/llpointer.h index c83e55577debb78b1505cf373a0f4cf9d7ae2753..e640ffd5950b194b1b5dc91a87b2ce0e45b6b49a 100644 --- a/indra/llcommon/llpointer.h +++ b/indra/llcommon/llpointer.h @@ -196,6 +196,9 @@ class LLCopyOnWritePointer : public LLPointer<Type> *(pointer_t*)(this) = new Type(*pointer_t::mPointer); } } + + const Type* operator->() const { return pointer_t::mPointer; } + const Type& operator*() const { return *pointer_t::mPointer; } }; #endif diff --git a/indra/llcommon/lltrace.h b/indra/llcommon/lltrace.h index f94576de45c960b123ab0d6f98143dc2f60b0771..e950a119d3a89e9985b08d7df6bff1a14fc9927f 100644 --- a/indra/llcommon/lltrace.h +++ b/indra/llcommon/lltrace.h @@ -175,10 +175,12 @@ class AccumulatorBuffer : public LLRefCount // NOTE: this is not thread-safe. We assume that slots are reserved in the main thread before any child threads are spawned size_t reserveSlot() { +#ifndef LL_RELEASE_FOR_DOWNLOAD if (LLTrace::isInitialized()) { llerrs << "Attempting to declare trace object after program initialization. Trace objects should be statically initialized." << llendl; } +#endif size_t next_slot = sNextStorageSlot++; if (next_slot >= mStorageSize) {