Index: core/include/fxcrt/fx_string.h |
diff --git a/core/include/fxcrt/fx_string.h b/core/include/fxcrt/fx_string.h |
index 26b04b70fad6f12c70e7ccf4dd7b9601d8c4872a..41bd0d3e7b902a7ec8479cde7435760d176ea419 100644 |
--- a/core/include/fxcrt/fx_string.h |
+++ b/core/include/fxcrt/fx_string.h |
@@ -597,7 +597,7 @@ private: |
} |
}; |
typedef const CFX_WideStringC& FX_WSTR; |
-#define FX_WSTRC(wstr) CFX_WideStringC((FX_LPCWSTR)wstr, sizeof(wstr) / sizeof(FX_WCHAR) - 1) |
+#define FX_WSTRC(wstr) CFX_WideStringC(wstr, sizeof(wstr) / sizeof(FX_WCHAR) - 1) |
struct CFX_StringDataW { |
long m_nRefs; |
@@ -640,9 +640,16 @@ public: |
static FX_STRSIZE WStringLength(const unsigned short* str); |
+ // Explicit conversion -- safer |
+ FX_LPCWSTR c_str() const |
+ { |
+ return m_pData ? m_pData->m_String : L""; |
+ } |
+ |
+ // Implicit conversion -- potentially risky |
Tom Sepez
2014/11/17 18:31:37
Can we remove this and fix the places where it fai
brucedawson
2014/11/17 18:41:55
Follow-on CL would be better. Simply removing the
|
operator FX_LPCWSTR() const |
Tom Sepez
2014/11/17 18:31:37
Also, maybe we want to mark this cast operator as
brucedawson
2014/11/17 18:41:55
That leads to just as many errors and would then e
|
{ |
- return m_pData ? m_pData->m_String : (FX_WCHAR*)L""; |
+ return m_pData ? m_pData->m_String : L""; |
} |
void Empty(); |
@@ -762,12 +769,12 @@ protected: |
}; |
inline CFX_WideStringC::CFX_WideStringC(const CFX_WideString& src) |
{ |
- m_Ptr = (FX_LPCWSTR)src; |
+ m_Ptr = src.c_str(); |
m_Length = src.GetLength(); |
} |
inline CFX_WideStringC& CFX_WideStringC::operator = (const CFX_WideString& src) |
{ |
- m_Ptr = (FX_LPCWSTR)src; |
+ m_Ptr = src.c_str(); |
m_Length = src.GetLength(); |
return *this; |
} |
@@ -841,6 +848,6 @@ inline CFX_ByteString FX_UTF8Encode(FX_WSTR wsStr) |
} |
inline CFX_ByteString FX_UTF8Encode(const CFX_WideString &wsStr) |
{ |
- return FX_UTF8Encode((FX_LPCWSTR)wsStr, wsStr.GetLength()); |
+ return FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength()); |
} |
#endif |