summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/fxcrt/include/fx_basic.h4
-rw-r--r--core/fxcrt/include/fx_system.h6
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