summaryrefslogtreecommitdiff
path: root/core/fxcrt
diff options
context:
space:
mode:
authorhans <hans@chromium.org>2016-05-16 12:25:44 -0700
committerCommit bot <commit-bot@chromium.org>2016-05-16 12:25:44 -0700
commit06f457216f45093dc5dff12055733aa426c26c59 (patch)
tree177397bc0f0502663ddae64afe008540b39360a2 /core/fxcrt
parent3f80c864d5318d4d80ac811d42c92d8f63e0b5ac (diff)
downloadpdfium-06f457216f45093dc5dff12055733aa426c26c59.tar.xz
Fix binding of null pointer dereference to reference typechromium/2740chromium/2739
A new Clang warning complains about this, and especially for the function returning a reference, it seems like a bad idea. BUG=none Review-Url: https://codereview.chromium.org/1986453002
Diffstat (limited to 'core/fxcrt')
-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