summaryrefslogtreecommitdiff
path: root/indra/llcommon
AgeCommit message (Collapse)Author
2018-02-19MAINT-8022 Handling memory errors in unzip_llsdNavMeshandreykproductengine
2018-02-12Merged in lindenlab/viewer-bearAndreyL ProductEngine
2018-02-12Merged in lindenlab/viewer-releaseAndreyL ProductEngine
2018-02-01MAINT-2338 Implemented binary parser depth controlandreykproductengine
2018-01-30MAINT-8091 Removed deprecated and unused private memory poolingAndrey Kleshchev
2018-01-29MAINT-8234 Mesh tread protections and removed unnecessary try in staticRun()Andrey Kleshchev
2018-01-29MAINT-8234 Mesh tread protections and removed unnecessary try in staticRun()Andrey Kleshchev
2018-01-17merge 5.1.0-releaseOz Linden
2018-01-17Merged in lindenlab/viewer-releaseAndreyL ProductEngine
2018-01-03MAINT-8022 Make unzip silent yet include failure reason into outputandreykproductengine
2018-01-02MAINT-8022 String crashes in unzip_llsdandreykproductengine
2017-12-20MAINT-8087: Use env vars from VMP for AppData\Roaming and Local.Nat Goodspeed
On Windows, when logged in with a non-ASCII username, every one of the three documented APIs -- SHGetSpecialFolderPath(), SHGetFolderPath() and SHGetKnownFolderPath() -- fails to retrieve any pathname at all. We cannot account for the fact that the oldest of these continues to work with the release viewer and within a Python script (though not, curiously, from a Python interactive session). With a non-ASCII username, they consistently fail when called from an Alex Ivy viewer build: "The filename, directory name, or volume label syntax is incorrect." Empirically, with a non-ASCII username, the preset APPDATA and LOCALAPPDATA environment variables are also useless, e.g. c:\Users\??????\AppData\Roaming where those are, yup, actual question marks. Empirically, the VMP is able to successfully call SHGetFolderPath() to retrieve both AppData\Roaming and AppData\Local. Therefore, we make the VMP set the APPDATA and LOCALAPPDATA environment variables to the UTF-8 encoded correct pathnames. Instead of calling SHGetSomethingFolderPath() at all, make LLDir_Win32 retrieve those environment variables. Make LLFile::mkdir() treat "directory already exists" as a success case. Every single call fell into one of two categories: either it didn't check success at all, or it tested specially to exempt errno == EEXIST. Migrate that test into mkdir(); eliminate it from call sites. Make LLDir::append() and add() convenience functions accept variadic arguments. Replace add(add()...) constructs, as well as clumsy concatenations of directory names and getDirDelimiter(), with simple variadic add() calls.
2017-11-29DRTVWR-418: Merge from latest viewer-releaseNat Goodspeed
2017-11-29merge changes for 5.0.9-releaseOz Linden
2017-11-28MAINT-8022 Crashes in unzip_llsd #2andreykproductengine
2017-11-27MAINT-8022 Crashes in unzip_llsdandreykproductengine
2017-10-11Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2017-10-11merge changes for 5.0.8-releaseOz Linden
2017-09-19MAINT-7820 Fixed crash in LLEventPumpandreykproductengine
2017-08-23merge changes for 5.0.7-releaseOz Linden
2017-08-16merge changes for DRTVWR-439Oz Linden
2017-08-08MAINT-7634: Logging and instrumentation canges to narrow down viewer crashes.Rider Linden
2017-07-28MAINT-7634: Move StatsAccumulator into llcommon, collect data sent and error ↵Rider Linden
codes from core.
2017-07-24fix separator between tags and file/functionOz Linden
2017-07-10MAINT-4532: properly detect Windows 10 in the 64bit build (only - 32bit runs ↵Oz Linden
in Windows 8 compatibility mode)
2017-06-20merge changes for 5.0.6-releaseOz Linden
2017-06-20fix presentation of log tags for better searchabilityOz Linden
2017-06-20Merged in lindenlab/viewer-lynxAndreyL ProductEngine
2017-06-20Merged in lindenlab/viewer-releaseAndreyL ProductEngine
2017-06-20Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2017-06-16MAINT-7488 FIXED [Windows] Viewer crashes when pasting empty string from ↵Mnikolenko Productengine
clipboard
2017-09-07mac and linux build fixMnikolenko Productengine
2017-09-06MAINT-7691 Fixed crash report not generating files in unicode named foldersandreykproductengine
2017-08-30MAINT-7758 Fixed freeze on loading lsl scripts from unicode named windows ↵andreykproductengine
folder.
2017-08-25MAINT-7739 Make LLOSInfo a Singletonandreykproductengine
2017-07-13MAINT-7593 FIXED "Failed to parse parameter" spamMnikolenko Productengine
2017-06-07MAINT-6697 Correct pointer freeingAndreyL ProductEngine
2017-06-07MAINT-6697 More nullchecks for zip/unzip functionsAndreyL ProductEngine
2017-06-07MAINT-6697 Added a nullcheck to unzip_llsd()AndreyL ProductEngine
2017-05-23merge changes for 5.0.5-releaseOz Linden
2017-05-22Automated merge with ssh://bitbucket.org/lindenlab/viewer-releaseNat Goodspeed
2017-05-22mergeBrad Payne (Vir Linden)
2017-05-18Linux buildfix; this should be reverted after gcc update to 4.7+AndreyL ProductEngine
2017-05-10Add size limit to LLEventBatchThrottle like LLEventBatch.Nat Goodspeed
The new behavior is that it will flush when either the pending batch has grown to the specified size, or the time interval has expired.
2017-05-10Automated merge with ssh://bitbucket.org/lindenlab/viewer-nekoNat Goodspeed
2017-05-10Add LLEventThrottle tests; actually *all* lleventfilter.cpp tests.Nat Goodspeed
For some reason there wasn't an entry in indra/llcommon/CMakeLists.txt to run the tests in indra/llcommon/tests/lleventfilter_test.cpp. It seems likely that at some point it existed, since all previous tests built and ran successfully. In any case, (re-)add lleventfilter_test.cpp to the set of llcommon tests. Also alphabetize them to make it easier to find a particular test invocation. Also add new tests for LLEventThrottle. To support this, refactor the concrete LLEventThrottle class into LLEventThrottleBase containing all the tricky logic, with pure virtual methods for access to LLTimer and LLEventTimeout, and an LLEventThrottle subclass containing the LLTimer and LLEventTimeout instances and corresponding implementations of the new pure virtual methods. That permits us to introduce TestEventThrottle, an alternate subclass with dummy implementations of the methods related to LLTimer and LLEventTimeout. In particular, we can explicitly advance simulated realtime to simulate particular LLTimer and LLEventTimeout behaviors. Finally, introduce Concat, a test LLEventPump listener class whose function is to concatenate received string event data into a composite string so we can readily test for particular sequences of events.
2017-05-10DRTVWR-418, MAINT-6996: Update Mac mem queries (per Drake Arconis)Nat Goodspeed
Drake points out that the OS X 64-bit-capable memory-query APIs recommended in comments by some long-ago maintainer are by now themselves obsolete. He offered this patch to update us to current macOS memory APIs.
2017-05-10Automated merge with ssh://bitbucket.org/lindenlab/viewer64Nat Goodspeed
2017-05-08DRTVWR-418: Work around VS2013's lack of __has_feature().Nat Goodspeed
2017-05-08DRTVWR-418: Fix -std=c++11 llinstancetracker_test crash.Nat Goodspeed
LLInstanceTracker<T> performs validation in ~LLInstanceTracker(). Normally validation failure logs an error and terminates the program, which is fine. In the test executable, though, we want validation failure to throw an exception instead so we can catch it and continue testing other failure conditions. But since destructors in C++11 are implicitly noexcept(true), that exception never made it out of ~LLInstanceTracker(): it crashed the test program instead. Declaring ~LLInstanceTracker() noexcept(false) solves that, allowing the test program to catch the exception and continue. However, if we unconditionally declare that, then every destructor anywhere in the inheritance hierarchy for any LLInstanceTracker subclass must also be noexcept(false)! That's way too pervasive, especially for functionality we only need (or want) in a specific test executable. Instead, make the CMake macros LL_ADD_PROJECT_UNIT_TESTS() and LL_ADD_INTEGRATION_TEST() -- with which we define all viewer build-time tests -- define two new command-line macros: LL_TEST=testname and LL_TEST_testname. That way, preprocessor logic in a header file can detect whether it's being compiled for production code or for a test executable. (While at it, encapsulate in a new GET_OPT_SOURCE_FILE_PROPERTY() CMake macro an ugly repetitive pattern. The builtin GET_SOURCE_FILE_PROPERTY() sets the target variable to "NOTFOUND" -- rather than an empty string -- if the specified property wasn't set. Every call to GET_SOURCE_FILE_PROPERTY() in LL_ADD_PROJECT_UNIT_TESTS() was followed by a test for NOTFOUND and an assignment to "". Wrap all that in a macro whose 'unset' value is "".) Now llinstancetracker.h can detect when we're building the LLInstanceTracker unit test executable, and *only then* declare ~LLInstanceTracker() as noexcept(false). We #define LLINSTANCETRACKER_DTOR_NOEXCEPT to expand either empty or noexcept(false), also detecting clang in C++11 mode. (It all works fine without noexcept(false) until we turn on C++11 mode.) We also use that macro for the StatBase class in lltrace.h. Turns out some of the infrastructure headers required for tests in general, including the LLInstanceTracker test, use LLInstanceTracker. Fortunately that appears to be the only other class we must annotate this way for the LLInstanceTracker tests.