diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2023-10-17 14:56:10 -0400 |
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2023-10-17 14:56:10 -0400 |
| commit | 651353560bfe23b6423ecf7690d86645a71c0cbc (patch) | |
| tree | 67ae301d4bd27bbebe3002610b3292d326077051 /indra/llcommon/llerror.h | |
| parent | 117f07e5a4b7882a44681c730dcc0628238cfec6 (diff) | |
SL-20476: Don't let the compiler know we intend to crash.
clang has gotten smart enough to recognize an inline attempt to store to
address zero. Fool it by storing to an address passed as a parameter, and pass
nullptr from a different source file.
Diffstat (limited to 'indra/llcommon/llerror.h')
| -rw-r--r-- | indra/llcommon/llerror.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h index 020f05e8f5..624a5fb37a 100644 --- a/indra/llcommon/llerror.h +++ b/indra/llcommon/llerror.h @@ -383,11 +383,9 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG; #define LL_NEWLINE '\n' // Use this only in LL_ERRS or in a place that LL_ERRS may not be used -#define LLERROR_CRASH \ -{ \ - int* make_me_crash = NULL;\ - *make_me_crash = 0; \ - exit(*make_me_crash); \ +#define LLERROR_CRASH \ +{ \ + crashdriver([](int* ptr){ *ptr = 0; exit(*ptr); }); \ } #define LL_ENDL \ @@ -466,5 +464,7 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG; // Check at run-time whether logging is enabled, without generating output bool debugLoggingEnabled(const std::string& tag); +// used by LLERROR_CRASH +void crashdriver(void (*)(int*)); #endif // LL_LLERROR_H |
