Index: core/src/fxcrt/fx_basic_wstring.cpp |
diff --git a/core/src/fxcrt/fx_basic_wstring.cpp b/core/src/fxcrt/fx_basic_wstring.cpp |
index 42a7ad72a6182225c27c7fcc878b08a1e072ebe5..742f249e37d5f523b3c3169e18bf7a8a3d4f41fb 100644 |
--- a/core/src/fxcrt/fx_basic_wstring.cpp |
+++ b/core/src/fxcrt/fx_basic_wstring.cpp |
@@ -4,6 +4,8 @@ |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+#include <stddef.h> // For offsetof(). |
+ |
#include "../../include/fxcrt/fx_basic.h" |
#include "../../../third_party/base/numerics/safe_math.h" |
@@ -15,7 +17,8 @@ static CFX_StringDataW* FX_AllocStringW(int nLen) |
return NULL; |
} |
- int overhead = 3 * sizeof(long) + sizeof(FX_WCHAR); // +WCHAR is for NUL. |
+ // Fixed portion of header plus a NUL wide char not in m_nAllocLength. |
+ int overhead = offsetof(CFX_StringDataW, m_String) + sizeof(FX_WCHAR); |
pdfium::base::CheckedNumeric<int> iSize = nLen; |
iSize *= sizeof(FX_WCHAR); |
iSize += overhead; |