diff options
-rw-r--r-- | core/fxcrt/include/fx_basic.h | 4 | ||||
-rw-r--r-- | core/fxcrt/include/fx_system.h | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/core/fxcrt/include/fx_basic.h b/core/fxcrt/include/fx_basic.h index 7121ffcd0b..59d72b8f5a 100644 --- a/core/fxcrt/include/fx_basic.h +++ b/core/fxcrt/include/fx_basic.h @@ -277,7 +277,7 @@ class CFX_ArrayTemplate : public CFX_BasicArray { const TYPE GetAt(int nIndex) const { if (nIndex < 0 || nIndex >= m_nSize) { - return (const TYPE&)(*(volatile const TYPE*)NULL); + PDFIUM_IMMEDIATE_CRASH(); } return ((const TYPE*)m_pData)[nIndex]; } @@ -292,7 +292,7 @@ class CFX_ArrayTemplate : public CFX_BasicArray { TYPE& ElementAt(int nIndex) { if (nIndex < 0 || nIndex >= m_nSize) { - return *(TYPE*)NULL; + PDFIUM_IMMEDIATE_CRASH(); } return ((TYPE*)m_pData)[nIndex]; } diff --git a/core/fxcrt/include/fx_system.h b/core/fxcrt/include/fx_system.h index 205976fb15..61acd73492 100644 --- a/core/fxcrt/include/fx_system.h +++ b/core/fxcrt/include/fx_system.h @@ -103,6 +103,12 @@ static_assert(FALSE == false, "false_needs_to_be_false"); #endif #endif +#if defined(__clang__) || defined(__GNUC__) +#define PDFIUM_IMMEDIATE_CRASH() __builtin_trap() +#else +#define PDFIUM_IMMEDIATE_CRASH() ((void)(*(volatile char*)0 = 0)) +#endif + // M_PI not universally present on all platforms. #define FX_PI 3.1415926535897932384626433832795f #define FX_BEZIER 0.5522847498308f |