summaryrefslogtreecommitdiff
path: root/core/fxcrt/cfx_string_c_template.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt/cfx_string_c_template.h')
-rw-r--r--core/fxcrt/cfx_string_c_template.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/core/fxcrt/cfx_string_c_template.h b/core/fxcrt/cfx_string_c_template.h
index b52817d790..4aba2cd4b9 100644
--- a/core/fxcrt/cfx_string_c_template.h
+++ b/core/fxcrt/cfx_string_c_template.h
@@ -9,8 +9,10 @@
#include <algorithm>
#include <type_traits>
+#include <vector>
#include "core/fxcrt/fx_system.h"
+#include "third_party/base/stl_util.h"
// An immutable string with caller-provided storage which must outlive the
// string itself. These are not necessarily nul-terminated, so that substring
@@ -53,6 +55,12 @@ class CFX_StringCTemplate {
m_Length = src.m_Length;
}
+ // Any changes to |vec| invalidate the string.
+ explicit CFX_StringCTemplate(const std::vector<UnsignedType>& vec) {
+ m_Ptr = vec.data();
+ m_Length = pdfium::CollectionSize<FX_STRSIZE>(vec);
+ }
+
CFX_StringCTemplate& operator=(const CharType* src) {
m_Ptr = reinterpret_cast<const UnsignedType*>(src);
m_Length = src ? FXSYS_len(src) : 0;