Index: core/fxcrt/include/fx_string.h |
diff --git a/core/fxcrt/include/fx_string.h b/core/fxcrt/include/fx_string.h |
index 94df35c8e7f27ca24abfd62a76bc438e953ef114..2fabee39cf9cfc5ef65a3587be91b029cd1b567c 100644 |
--- a/core/fxcrt/include/fx_string.h |
+++ b/core/fxcrt/include/fx_string.h |
@@ -34,18 +34,19 @@ class CFX_ByteStringC { |
m_Length = size; |
} |
+ // Deliberately implicit to avoid calling on every string literal. |
CFX_ByteStringC(const FX_CHAR* ptr) { |
m_Ptr = (const uint8_t*)ptr; |
m_Length = ptr ? FXSYS_strlen(ptr) : 0; |
} |
+ // Deliberately implicit to avoid calling on every string literal. |
// |ch| must be an lvalue that outlives the the CFX_ByteStringC. However, |
// the use of char rvalues are not caught at compile time. They are |
// implicitly promoted to CFX_ByteString (see below) and then the |
// CFX_ByteStringC is constructed from the CFX_ByteString via the alternate |
// constructor below. The CFX_ByteString then typically goes out of scope |
// and |m_Ptr| may be left pointing to invalid memory. Beware. |
- // TODO(tsepez): Mark single-argument string constructors as explicit. |
CFX_ByteStringC(FX_CHAR& ch) { |
m_Ptr = (const uint8_t*)&ch; |
m_Length = 1; |
@@ -357,11 +358,19 @@ class CFX_WideStringC { |
m_Length = 0; |
} |
+ // Deliberately implicit to avoid calling on every string literal. |
CFX_WideStringC(const FX_WCHAR* ptr) { |
m_Ptr = ptr; |
m_Length = ptr ? FXSYS_wcslen(ptr) : 0; |
} |
+ // Deliberately implicit to avoid calling on every string literal. |
+ // |ch| must be an lvalue that outlives the the CFX_WideStringC. However, |
+ // the use of char rvalues are not caught at compile time. They are |
+ // implicitly promoted to CFX_WideString (see below) and then the |
+ // CFX_WideStringC is constructed from the CFX_WideString via the alternate |
+ // constructor below. The CFX_WideString then typically goes out of scope |
+ // and |m_Ptr| may be left pointing to invalid memory. Beware. |
CFX_WideStringC(FX_WCHAR& ch) { |
m_Ptr = &ch; |
m_Length = 1; |