<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/llcommon/llsafehandle.h, branch main</title>
<subtitle>Megapahit's fork of the Second Life viewer.
</subtitle>
<id>https://www.megapahit.org/viewer.git/atom?h=main</id>
<link rel='self' href='https://www.megapahit.org/viewer.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/'/>
<updated>2024-04-29T04:56:09Z</updated>
<entry>
<title>#824 Process source files in bulk: replace tabs with spaces, convert CRLF to LF, and trim trailing whitespaces as needed</title>
<updated>2024-04-29T04:56:09Z</updated>
<author>
<name>Andrey Lihatskiy</name>
<email>alihatskiy@productengine.com</email>
</author>
<published>2024-04-29T04:43:28Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=1b68f71348ecf3983b76b40d7940da8377f049b7'/>
<id>urn:sha1:1b68f71348ecf3983b76b40d7940da8377f049b7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-418: Add dtor to LLSafeHandle&lt;T&gt;::NullInstanceHolder</title>
<updated>2017-05-04T02:53:34Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2017-05-04T02:53:34Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=d6b870c0cae04a9a2576c8849ebe03822eb78e6c'/>
<id>urn:sha1:d6b870c0cae04a9a2576c8849ebe03822eb78e6c</id>
<content type='text'>
to suppress fatal warnings in Visual Studio.
</content>
</entry>
<entry>
<title>DRTVWR-418: Add big deprecation notice to llsafehandle.h.</title>
<updated>2017-05-03T17:20:56Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2017-05-03T17:20:56Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=9002e3cbc7a4f7ef2847ab6652de0f11eaff6ef2'/>
<id>urn:sha1:9002e3cbc7a4f7ef2847ab6652de0f11eaff6ef2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>DRTVWR-418: Use (protected) LLSingleton to store "null instance"</title>
<updated>2017-04-27T22:49:33Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2017-04-27T22:49:33Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=29dd5f0123a89f44688477d04a421b90d1efe635'/>
<id>urn:sha1:29dd5f0123a89f44688477d04a421b90d1efe635</id>
<content type='text'>
of LLSafeHandle's referenced type. Using LLSingleton gives us a well-defined
time at which the "null instance" is deleted: LLSingletonBase::deleteAll().
</content>
</entry>
<entry>
<title>DRTVWR-418: Xcode 8.3 complains about LLSafeHandle&lt;T&gt; implementation.</title>
<updated>2017-03-30T19:39:47Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2017-03-30T19:39:47Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=e9fe0714ad422c2b9250c8ce13d3b2837dff5430'/>
<id>urn:sha1:e9fe0714ad422c2b9250c8ce13d3b2837dff5430</id>
<content type='text'>
The previous LLSafeHandle&lt;T&gt; implementation declares a static data member of
the template class but provides no (generic) definition, relying on particular
specializations to provide the definition. The data member is a function
pointer, which is called in one of the methods to produce a pointer to a
"null" T instance: that is, a dummy instance to be dereferenced in case the
wrapped T* is null.

Xcode 8.3's version of clang is bothered by the call, in a generic method,
through this (usually) uninitialized pointer. It happens that the only
specializations of LLSafeHandle do both provide definitions. I don't know
whether that's formally valid C++03 or not; but I agree with the compiler: I
don't like it.

Instead of declaring a public static function pointer which each
specialization is required to define, add a protected static method to the
template class. This protected static method simply returns a pointer to a
function-static T instance. This is functionally similar to a static
LLPointer&lt;T&gt; set on demand (as in the two specializations), including lazy
instantiation.

Unlike the previous implementation, this approach prohibits a given
specialization from customizing the "null" instance function. Although there
exist reasonable ways to support that (e.g. a related traits template), I
decided not to complicate the LLSafeHandle implementation to make it more
generally useful. I don't really approve of LLSafeHandle, and don't want to
see it proliferate. It's not clear that unconditionally dereferencing
LLSafeHandle&lt;T&gt; is in any way better than conditionally dereferencing
LLPointer&lt;T&gt;. It doesn't even skip the runtime conditional test; it simply
obscures it. (There exist hints in the code that at one time it might have
immediately replaced any wrapped null pointer value with the pointer to the
"null" instance, obviating the test at dereference time, but this is not the
current functionality. Perhaps it was only ever wishful thinking.)

Remove the corresponding functions and static LLPointers from the two classes
that use LLSafeHandle.
</content>
</entry>
<entry>
<title>remove execute permission from many files that should not have it</title>
<updated>2015-11-10T14:48:56Z</updated>
<author>
<name>Oz Linden</name>
<email>oz@lindenlab.com</email>
</author>
<published>2015-11-10T14:48:56Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=c8726aba303bcf1207b730a344536e25491420bc'/>
<id>urn:sha1:c8726aba303bcf1207b730a344536e25491420bc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>second phase summer cleaning</title>
<updated>2013-08-10T00:11:19Z</updated>
<author>
<name>Richard Linden</name>
<email>none@none</email>
</author>
<published>2013-08-10T00:11:19Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=e340009fc59d59e59b2e8d903a884acb76b178eb'/>
<id>urn:sha1:e340009fc59d59e59b2e8d903a884acb76b178eb</id>
<content type='text'>
replace llinfos, lldebugs, etc with new LL_INFOS(), LL_DEBUGS(), etc.
</content>
</entry>
<entry>
<title>Update Mac and Windows breakpad builds to latest</title>
<updated>2013-03-29T14:50:08Z</updated>
<author>
<name>Graham Madarasz</name>
<email>graham@lindenlab.com</email>
</author>
<published>2013-03-29T14:50:08Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=bf6182daa8b4d7cea79310547f71d7a3155e17b0'/>
<id>urn:sha1:bf6182daa8b4d7cea79310547f71d7a3155e17b0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Change license from GPL to LGPL (version 2.1)</title>
<updated>2010-08-13T11:24:57Z</updated>
<author>
<name>Oz Linden</name>
<email>oz@lindenlab.com</email>
</author>
<published>2010-08-13T11:24:57Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=06b0d72efa96b6a0ed665f7cd46f358c48929e7b'/>
<id>urn:sha1:06b0d72efa96b6a0ed665f7cd46f358c48929e7b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge inspectors UI project, gooey-4, into viewer-2 trunk.  Added new tooltips to 3D avatars, 2D avatar names, and 3D objects.  Refactors tooltips and text boxes, line editors, and text editors.  Breaks LLExpandableTextBox, but a fix is coming.</title>
<updated>2009-10-03T23:40:28Z</updated>
<author>
<name>James Cook</name>
<email>james@lindenlab.com</email>
</author>
<published>2009-10-03T23:40:28Z</published>
<link rel='alternate' type='text/html' href='https://www.megapahit.org/viewer.git/commit/?id=ada0f4fa221f2c7070fb02a2b7ff903bdde11c45'/>
<id>urn:sha1:ada0f4fa221f2c7070fb02a2b7ff903bdde11c45</id>
<content type='text'>
Resolved conflicts in lltexteditor.cpp, llchatitemscontainerctrl.cpp, llchatmsgbox.cpp, llfloaterbuycurrency.cpp, llnearbychat.cpp, floater_buy_currency.xml, and ru/strings.xml

Merging revisions 134925-135157 of svn+ssh://svn.lindenlab.com/svn/linden/branches/gooey/gooey-4 into C:\source\viewer-2.0.0-3, respecting ancestry
</content>
</entry>
</feed>
