summaryrefslogtreecommitdiff
path: root/indra/llrender
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-09-12 09:12:33 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-09-18 14:05:27 -0400
commita3d6544be07e3cd0bb7e4cb78564a0d6077fd910 (patch)
tree372a9b5dfa13dd885ea09d3b64b2e0505b51b09b /indra/llrender
parentf037cde7f4d5d55dc0a71eb867f5b2bfcaf5631f (diff)
Give `LLGLSLShader::finishProfile()` a static default string param.
`finishProfile()` is called at least once within a `__try` block. If we default its `report_name` parameter to a temporary `std::string`, that temporary must be destroyed when the stack is unwound, which `__try` forbids. (cherry picked from commit c6e6f44f50b4de391000c5b9f781a2f0a5024e76)
Diffstat (limited to 'indra/llrender')
-rw-r--r--indra/llrender/llglslshader.cpp1
-rw-r--r--indra/llrender/llglslshader.h7
2 files changed, 7 insertions, 1 deletions
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index bb734971d5..56f1533708 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -65,6 +65,7 @@ U64 LLGLSLShader::sTotalTimeElapsed = 0;
U32 LLGLSLShader::sTotalTrianglesDrawn = 0;
U64 LLGLSLShader::sTotalSamplesDrawn = 0;
U32 LLGLSLShader::sTotalBinds = 0;
+std::string LLGLSLShader::sDefaultReportName;
//UI shader -- declared here so llui_libtest will link properly
LLGLSLShader gUIProgram;
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
index efcbaf42e8..a9b9bfafa8 100644
--- a/indra/llrender/llglslshader.h
+++ b/indra/llrender/llglslshader.h
@@ -170,7 +170,7 @@ public:
static U32 sMaxGLTFNodes;
static void initProfile();
- static void finishProfile(const std::string& report_name={});
+ static void finishProfile(const std::string& report_name=sDefaultReportName);
static void startProfile();
static void stopProfile();
@@ -364,6 +364,11 @@ public:
private:
void unloadInternal();
+ // This must be static because finishProfile() is called at least once
+ // within a __try block. If we default its report_name parameter to a
+ // temporary std::string, that temporary must be destroyed when the stack
+ // is unwound, which __try forbids.
+ static std::string sDefaultReportName;
};
//UI shader (declared here so llui_libtest will link properly)