summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Dawson <brucedawson@google.com>2014-12-23 12:21:02 -0800
committerBruce Dawson <brucedawson@google.com>2014-12-23 12:21:02 -0800
commit0a476d22c89eb99d36dfd6c9955dd12d1513a870 (patch)
tree6f66fd7da1565546bd1b0d0447d827463c1d5988
parent1be4117d0ea336203680c64d9d0a1ae1d5a6cf61 (diff)
downloadpdfium-0a476d22c89eb99d36dfd6c9955dd12d1513a870.tar.xz
XFA: merge patch from CL 733693003, getting rid of more casts
Getting rid of more (FX_LPCWSTR) casts and fixing two bugs revealed by this. Since casts to FX_LPCWSTR have been shown to hide bugs I tried removing more of them, targeting those places where a cast was used to force a conversion from CFX_WideString to FX_LPCWSTR, replacing these casts with calls to the newly added .c_str() function. This revealed two places where the cast was hiding a bug -- where ->c_str() was required instead! This removes ~33 FX_LPCWSTR casts and there are ~31 left, many of which will go away in some future change. Also includes this change: Removing unnecessary casts from wchar_t* to wchar_t*, by various names. Original patch from Bruce Dawson(brucedawson@chromium.org) TBR=bo_xu@foxitsoftware.com, tsepez@chromium.org Review URL: https://codereview.chromium.org/811593007
-rw-r--r--core/include/fxcrt/fx_string.h15
-rw-r--r--core/src/fpdfapi/fpdf_font/fpdf_font.cpp2
-rw-r--r--core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp6
-rw-r--r--core/src/fpdfdoc/doc_form.cpp2
-rw-r--r--core/src/fxcrt/fx_basic_bstring.cpp2
-rw-r--r--core/src/fxcrt/fx_basic_buffer.cpp2
-rw-r--r--core/src/fxcrt/fx_extension.cpp2
-rw-r--r--core/src/fxcrt/fx_xml_parser.cpp9
-rw-r--r--core/src/fxcrt/fxcrt_platforms.cpp2
-rw-r--r--fpdfsdk/include/javascript/JS_Define.h10
-rw-r--r--fpdfsdk/src/fsdk_baseform.cpp12
-rw-r--r--fpdfsdk/src/javascript/Document.cpp4
-rw-r--r--fpdfsdk/src/javascript/Field.cpp10
-rw-r--r--fpdfsdk/src/javascript/PublicMethods.cpp10
-rw-r--r--fpdfsdk/src/javascript/app.cpp2
-rw-r--r--fpdfsdk/src/javascript/global.cpp2
16 files changed, 47 insertions, 45 deletions
diff --git a/core/include/fxcrt/fx_string.h b/core/include/fxcrt/fx_string.h
index 364c510f73..47e8ecdf1e 100644
--- a/core/include/fxcrt/fx_string.h
+++ b/core/include/fxcrt/fx_string.h
@@ -640,9 +640,16 @@ public:
static FX_STRSIZE WStringLength(const unsigned short* str);
+ // Explicit conversion to raw string
+ FX_LPCWSTR c_str() const
+ {
+ return m_pData ? m_pData->m_String : L"";
+ }
+
+ // Implicit conversion to C-style wide string -- deprecated
operator FX_LPCWSTR() const
{
- 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
diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
index 36b6ce2b5b..dd646ca113 100644
--- a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
+++ b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
@@ -228,7 +228,7 @@ CFX_ByteString CPDF_Font::EncodeString(const CFX_WideString& str) const
CFX_ByteString result;
int src_len = str.GetLength();
FX_LPSTR dest_buf = result.GetBuffer(src_len * 2);
- FX_LPCWSTR src_buf = str;
+ FX_LPCWSTR src_buf = str.c_str();
int dest_pos = 0;
for (int src_pos = 0; src_pos < src_len; src_pos ++) {
FX_DWORD charcode = CharCodeFromUnicode(src_buf[src_pos]);
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp
index dd4eeddc17..e431c6ad3c 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp
@@ -175,9 +175,9 @@ void FPDF_FileSpec_SetWin32Path(CPDF_Object* pFileSpec, const CFX_WideString& fi
if (filepath[2] != '\\') {
result += '/';
}
- result += ChangeSlash((FX_LPCWSTR)filepath + 2);
+ result += ChangeSlash(filepath.c_str() + 2);
} else if (filepath.GetLength() > 1 && filepath[0] == '\\' && filepath[1] == '\\') {
- result = ChangeSlash((FX_LPCWSTR)filepath + 1);
+ result = ChangeSlash(filepath.c_str() + 1);
} else {
result = ChangeSlash(filepath);
}
@@ -217,7 +217,7 @@ CFX_WideString FPDF_FileSpec_GetWin32Path(const CPDF_Object* pFileSpec)
CFX_WideString result;
result += wsFileName[1];
result += ':';
- result += ChangeSlash(((FX_LPCWSTR)wsFileName) + 2);
+ result += ChangeSlash(wsFileName.c_str() + 2);
return result;
} else {
CFX_WideString result;
diff --git a/core/src/fpdfdoc/doc_form.cpp b/core/src/fpdfdoc/doc_form.cpp
index 821b9981b8..6b7e6bf2d6 100644
--- a/core/src/fpdfdoc/doc_form.cpp
+++ b/core/src/fpdfdoc/doc_form.cpp
@@ -161,7 +161,7 @@ CFieldTree::_Node *CFieldTree::_Lookup(_Node *pParent, const CFX_WideString &sho
for (int i = 0; i < ptr_array.GetSize(); i ++) {
_Node *pNode = (_Node *)ptr_array[i];
if (pNode->short_name.GetLength() == short_name.GetLength() &&
- FXSYS_memcmp32((FX_LPCWSTR)pNode->short_name, (FX_LPCWSTR)short_name, short_name.GetLength()*sizeof(FX_WCHAR)) == 0) {
+ FXSYS_memcmp32(pNode->short_name.c_str(), short_name.c_str(), short_name.GetLength()*sizeof(FX_WCHAR)) == 0) {
return pNode;
}
}
diff --git a/core/src/fxcrt/fx_basic_bstring.cpp b/core/src/fxcrt/fx_basic_bstring.cpp
index 60153fa45a..c54148d799 100644
--- a/core/src/fxcrt/fx_basic_bstring.cpp
+++ b/core/src/fxcrt/fx_basic_bstring.cpp
@@ -971,7 +971,7 @@ CFX_ByteString CFX_ByteString::FromUnicode(FX_LPCWSTR str, FX_STRSIZE len)
}
CFX_ByteString CFX_ByteString::FromUnicode(const CFX_WideString& str)
{
- return FromUnicode((FX_LPCWSTR)str, str.GetLength());
+ return FromUnicode(str.c_str(), str.GetLength());
}
void CFX_ByteString::ConvertFrom(const CFX_WideString& str, CFX_CharMap* pCharMap)
{
diff --git a/core/src/fxcrt/fx_basic_buffer.cpp b/core/src/fxcrt/fx_basic_buffer.cpp
index 1734423253..b208142d92 100644
--- a/core/src/fxcrt/fx_basic_buffer.cpp
+++ b/core/src/fxcrt/fx_basic_buffer.cpp
@@ -192,7 +192,7 @@ CFX_WideTextBuf& CFX_WideTextBuf::operator << (FX_WSTR str)
}
CFX_WideTextBuf& CFX_WideTextBuf::operator << (const CFX_WideString &str)
{
- AppendBlock((FX_LPCWSTR)str, str.GetLength() * sizeof(FX_WCHAR));
+ AppendBlock(str.c_str(), str.GetLength() * sizeof(FX_WCHAR));
return *this;
}
CFX_WideTextBuf& CFX_WideTextBuf::operator << (int i)
diff --git a/core/src/fxcrt/fx_extension.cpp b/core/src/fxcrt/fx_extension.cpp
index 330c675457..e74c52d4a8 100644
--- a/core/src/fxcrt/fx_extension.cpp
+++ b/core/src/fxcrt/fx_extension.cpp
@@ -158,7 +158,7 @@ FX_FLOAT FXSYS_strtof(FX_LPCSTR pcsStr, FX_INT32 iLength, FX_INT32 *pUsedLen)
iLength = (FX_INT32)FXSYS_strlen(pcsStr);
}
CFX_WideString ws = CFX_WideString::FromLocal(pcsStr, iLength);
- return FXSYS_wcstof((FX_LPCWSTR)ws, iLength, pUsedLen);
+ return FXSYS_wcstof(ws.c_str(), iLength, pUsedLen);
}
FX_FLOAT FXSYS_wcstof(FX_LPCWSTR pwsStr, FX_INT32 iLength, FX_INT32 *pUsedLen)
{
diff --git a/core/src/fxcrt/fx_xml_parser.cpp b/core/src/fxcrt/fx_xml_parser.cpp
index ea471d4792..8049a5587e 100644
--- a/core/src/fxcrt/fx_xml_parser.cpp
+++ b/core/src/fxcrt/fx_xml_parser.cpp
@@ -670,18 +670,13 @@ FX_BOOL CXML_Element::GetAttrValue(FX_BSTR name, CFX_WideString& attribute) cons
{
CFX_ByteStringC bsSpace, bsName;
FX_XML_SplitQualifiedName(name, bsSpace, bsName);
- const CFX_WideString* pValue = m_AttrMap.Lookup(bsSpace, bsName);
- if (pValue) {
- attribute = CFX_WideString((FX_LPCWSTR)*pValue, pValue->GetLength());
- return TRUE;
- }
- return FALSE;
+ return GetAttrValue(bsSpace, bsName, attribute);
}
FX_BOOL CXML_Element::GetAttrValue(FX_BSTR space, FX_BSTR name, CFX_WideString& attribute) const
{
const CFX_WideString* pValue = m_AttrMap.Lookup(space, name);
if (pValue) {
- attribute = CFX_WideString((FX_LPCWSTR)*pValue, pValue->GetLength());
+ attribute = *pValue;
return TRUE;
}
return FALSE;
diff --git a/core/src/fxcrt/fxcrt_platforms.cpp b/core/src/fxcrt/fxcrt_platforms.cpp
index e14e362079..1c47ee6c9b 100644
--- a/core/src/fxcrt/fxcrt_platforms.cpp
+++ b/core/src/fxcrt/fxcrt_platforms.cpp
@@ -56,7 +56,7 @@ FX_BOOL CFXCRT_FileAccess_CRT::Open(FX_WSTR fileName, FX_DWORD dwMode)
}
CFX_WideString strMode;
FXCRT_GetFileModeString(dwMode, strMode);
- m_hFile = FXSYS_wfopen(fileName.GetPtr(), (FX_LPCWSTR)strMode);
+ m_hFile = FXSYS_wfopen(fileName.GetPtr(), strMode.c_str());
return m_hFile != NULL;
}
void CFXCRT_FileAccess_CRT::Close()
diff --git a/fpdfsdk/include/javascript/JS_Define.h b/fpdfsdk/include/javascript/JS_Define.h
index a60db4aa3f..8ead492548 100644
--- a/fpdfsdk/include/javascript/JS_Define.h
+++ b/fpdfsdk/include/javascript/JS_Define.h
@@ -332,8 +332,8 @@ const wchar_t * js_class_name::m_pClassName = JS_WIDESTRING(class_name);\
ASSERT(pObj != NULL);\
FX_BOOL bRet = FALSE;\
MEMLEAKCHECK_1();\
- bRet = pObj->QueryProperty((FX_LPCWSTR)propname);\
- MEMLEAKCHECK_2(class_name, (FX_LPCWSTR)prop_name);\
+ bRet = pObj->QueryProperty(propname.c_str());\
+ MEMLEAKCHECK_2(class_name, prop_name.c_str());\
if (bRet)\
{\
info.GetReturnValue().Set(0x004);\
@@ -364,7 +364,7 @@ const wchar_t * js_class_name::m_pClassName = JS_WIDESTRING(class_name);\
JS_ErrorString sError;\
FX_BOOL bRet = FALSE;\
MEMLEAKCHECK_1();\
- bRet = pObj->DoProperty(cc, (FX_LPCWSTR)propname, value, sError);\
+ bRet = pObj->DoProperty(cc, propname.c_str(), value, sError);\
MEMLEAKCHECK_2(class_name, L"GetProperty");\
if (bRet)\
{\
@@ -399,7 +399,7 @@ const wchar_t * js_class_name::m_pClassName = JS_WIDESTRING(class_name);\
JS_ErrorString sError;\
FX_BOOL bRet = FALSE;\
MEMLEAKCHECK_1();\
- bRet = pObj->DoProperty(cc, (FX_LPCWSTR)propname, PropValue, sError);\
+ bRet = pObj->DoProperty(cc, propname.c_str(), PropValue, sError);\
MEMLEAKCHECK_2(class_name,L"PutProperty");\
if (bRet)\
{\
@@ -431,7 +431,7 @@ const wchar_t * js_class_name::m_pClassName = JS_WIDESTRING(class_name);\
JS_ErrorString sError;\
FX_BOOL bRet = FALSE;\
MEMLEAKCHECK_1();\
- bRet = pObj->DelProperty(cc, (FX_LPCWSTR)propname, sError);\
+ bRet = pObj->DelProperty(cc, propname.c_str(), sError);\
MEMLEAKCHECK_2(class_name,L"DelProperty");\
if (bRet)\
{\
diff --git a/fpdfsdk/src/fsdk_baseform.cpp b/fpdfsdk/src/fsdk_baseform.cpp
index c301a8760a..5dbd4f721b 100644
--- a/fpdfsdk/src/fsdk_baseform.cpp
+++ b/fpdfsdk/src/fsdk_baseform.cpp
@@ -1711,9 +1711,9 @@ void CPDFSDK_Widget::ResetAppearance_ComboBox(FX_LPCWSTR sValue)
FX_INT32 nCurSel = pField->GetSelectedIndex(0);
if (nCurSel < 0)
- pEdit->SetText((FX_LPCWSTR)pField->GetValue());
+ pEdit->SetText(pField->GetValue().c_str());
else
- pEdit->SetText((FX_LPCWSTR)pField->GetOptionLabel(nCurSel));
+ pEdit->SetText(pField->GetOptionLabel(nCurSel).c_str());
}
CPDF_Rect rcContent = pEdit->GetContentRect();
@@ -1798,7 +1798,7 @@ void CPDFSDK_Widget::ResetAppearance_ListBox()
}
}
- pEdit->SetText((FX_LPCWSTR)pField->GetOptionLabel(i));
+ pEdit->SetText(pField->GetOptionLabel(i).c_str());
CPDF_Rect rcContent = pEdit->GetContentRect();
FX_FLOAT fItemHeight = rcContent.Height();
@@ -1924,7 +1924,7 @@ void CPDFSDK_Widget::ResetAppearance_TextField(FX_LPCWSTR sValue)
if (sValue)
pEdit->SetText(sValue);
else
- pEdit->SetText((FX_LPCWSTR)pField->GetValue());
+ pEdit->SetText(pField->GetValue().c_str());
CPDF_Rect rcContent = pEdit->GetContentRect();
@@ -3051,7 +3051,7 @@ FX_BOOL CPDFSDK_InterForm::SubmitFields(const CFX_WideString& csDestination, con
return FALSE;
}
- pEnv->JS_docSubmitForm(pBuffer, nBufSize, (FX_LPCWSTR)csDestination);
+ pEnv->JS_docSubmitForm(pBuffer, nBufSize, csDestination.c_str());
return TRUE;
}
@@ -3223,7 +3223,7 @@ FX_BOOL CPDFSDK_InterForm::SubmitForm(const CFX_WideString& sDestination, FX_BOO
return FALSE;
}
- pEnv->JS_docSubmitForm(pBuffer, nBufSize, (FX_LPCWSTR)sDestination);
+ pEnv->JS_docSubmitForm(pBuffer, nBufSize, sDestination.c_str());
if (bUrlEncoded && pBuffer)
{
diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp
index 9ee9639813..2c12068328 100644
--- a/fpdfsdk/src/javascript/Document.cpp
+++ b/fpdfsdk/src/javascript/Document.cpp
@@ -605,7 +605,7 @@ FX_BOOL Document::mailForm(OBJ_METHOD_PARAMS)
ASSERT(pRuntime != NULL);
pRuntime->BeginBlock();
- pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, (FX_LPCWSTR)cTo, (FX_LPCWSTR)cSubject, (FX_LPCWSTR)cCc, (FX_LPCWSTR)cBcc, (FX_LPCWSTR)cMsg);
+ pEnv->JS_docmailForm(textBuf.GetBuffer(), textBuf.GetLength(), bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str());
pRuntime->EndBlock();
return TRUE;
}
@@ -999,7 +999,7 @@ FX_BOOL Document::mailDoc(OBJ_METHOD_PARAMS)
pRuntime->BeginBlock();
CPDFDoc_Environment* pEnv = pRuntime->GetReaderApp();
- pEnv->JS_docmailForm(NULL, 0, bUI, (FX_LPCWSTR)cTo, (FX_LPCWSTR)cSubject, (FX_LPCWSTR)cCc, (FX_LPCWSTR)cBcc, (FX_LPCWSTR)cMsg);
+ pEnv->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str());
pRuntime->EndBlock();
return TRUE;
diff --git a/fpdfsdk/src/javascript/Field.cpp b/fpdfsdk/src/javascript/Field.cpp
index 4b1f20ac16..24de66d54d 100644
--- a/fpdfsdk/src/javascript/Field.cpp
+++ b/fpdfsdk/src/javascript/Field.cpp
@@ -194,7 +194,7 @@ FX_BOOL Field::AttachField(Document* pDocument, const CFX_WideString& csFieldNam
{
std::wstring strFieldName;
int iControlNo = -1;
- ParseFieldName((FX_LPCWSTR)swFieldNameTemp, strFieldName, iControlNo);
+ ParseFieldName(swFieldNameTemp.c_str(), strFieldName, iControlNo);
if (iControlNo == -1) return FALSE;
m_FieldName = strFieldName.c_str();
@@ -1573,7 +1573,7 @@ FX_BOOL Field::exportValues(OBJ_PROP_PARAMS)
CPDF_FormControl* pFormControl = pFormField->GetControl(i);
ASSERT(pFormControl != NULL);
- ExportValusArray.SetElement(i, CJS_Value(m_isolate,(FX_LPCWSTR)pFormControl->GetExportValue()));
+ ExportValusArray.SetElement(i, CJS_Value(m_isolate,pFormControl->GetExportValue().c_str()));
}
}
else
@@ -1582,7 +1582,7 @@ FX_BOOL Field::exportValues(OBJ_PROP_PARAMS)
CPDF_FormControl* pFormControl = pFormField->GetControl(m_nFormControlIndex);
if (!pFormControl) return FALSE;
- ExportValusArray.SetElement(0, CJS_Value(m_isolate,(FX_LPCWSTR)pFormControl->GetExportValue()));
+ ExportValusArray.SetElement(0, CJS_Value(m_isolate,pFormControl->GetExportValue().c_str()));
}
vp << ExportValusArray;
@@ -3322,7 +3322,7 @@ FX_BOOL Field::valueAsString(OBJ_PROP_PARAMS)
{
if (pFormField->GetControl(i)->IsChecked())
{
- vp << (FX_LPCWSTR)pFormField->GetControl(i)->GetExportValue();
+ vp << pFormField->GetControl(i)->GetExportValue().c_str();
break;
}
else
@@ -3334,7 +3334,7 @@ FX_BOOL Field::valueAsString(OBJ_PROP_PARAMS)
vp << L"";
}
else
- vp << (FX_LPCWSTR)pFormField->GetValue();
+ vp << pFormField->GetValue().c_str();
return TRUE;
}
diff --git a/fpdfsdk/src/javascript/PublicMethods.cpp b/fpdfsdk/src/javascript/PublicMethods.cpp
index 4c51c9ae25..82bffe67bf 100644
--- a/fpdfsdk/src/javascript/PublicMethods.cpp
+++ b/fpdfsdk/src/javascript/PublicMethods.cpp
@@ -1554,7 +1554,7 @@ FX_BOOL CJS_PublicMethods::AFDate_FormatEx(OBJ_METHOD_PARAMS)
if (JS_PortIsNan(dDate))
{
CFX_WideString swMsg;
- swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), (FX_LPCWSTR)sFormat);
+ swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), sFormat.c_str());
Alert(pContext, swMsg);
return FALSE;
}
@@ -1652,7 +1652,7 @@ FX_BOOL CJS_PublicMethods::AFDate_KeystrokeEx(OBJ_METHOD_PARAMS)
if (bWrongFormat || JS_PortIsNan(dRet))
{
CFX_WideString swMsg;
- swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), (FX_LPCWSTR)sFormat);
+ swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), sFormat.c_str());
Alert(pContext, swMsg);
pEvent->Rc() = FALSE;
return TRUE;
@@ -2059,7 +2059,7 @@ FX_BOOL CJS_PublicMethods::AFParseDateEx(OBJ_METHOD_PARAMS)
if (JS_PortIsNan(dDate))
{
CFX_WideString swMsg;
- swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), (FX_LPCWSTR)sFormat);
+ swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), sFormat.c_str());
Alert((CJS_Context *)cc, swMsg);
return FALSE;
}
@@ -2304,7 +2304,7 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(OBJ_METHOD_PARAMS)
{
if (sPart.GetLength() > 0)
{
- nums.SetElement(nIndex,CJS_Value(isolate,(FX_LPCWSTR)sPart));
+ nums.SetElement(nIndex,CJS_Value(isolate,sPart.c_str()));
sPart = L"";
nIndex ++;
}
@@ -2313,7 +2313,7 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(OBJ_METHOD_PARAMS)
if (sPart.GetLength() > 0)
{
- nums.SetElement(nIndex,CJS_Value(isolate,(FX_LPCWSTR)sPart));
+ nums.SetElement(nIndex,CJS_Value(isolate,sPart.c_str()));
}
if (nums.GetLength() > 0)
diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp
index 602bfaee93..7cf2663d25 100644
--- a/fpdfsdk/src/javascript/app.cpp
+++ b/fpdfsdk/src/javascript/app.cpp
@@ -810,7 +810,7 @@ FX_BOOL app::mailMsg(OBJ_METHOD_PARAMS)
ASSERT(pApp != NULL);
pRuntime->BeginBlock();
- pApp->JS_docmailForm(NULL, 0, bUI, (FX_LPCWSTR)cTo, (FX_LPCWSTR)cSubject, (FX_LPCWSTR)cCc, (FX_LPCWSTR)cBcc, (FX_LPCWSTR)cMsg);
+ pApp->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), cSubject.c_str(), cCc.c_str(), cBcc.c_str(), cMsg.c_str());
///////////////////////////////////////////////////////////////////////////////////////////////
pRuntime->EndBlock();
diff --git a/fpdfsdk/src/javascript/global.cpp b/fpdfsdk/src/javascript/global.cpp
index f845ee0193..f5bc82c1bb 100644
--- a/fpdfsdk/src/javascript/global.cpp
+++ b/fpdfsdk/src/javascript/global.cpp
@@ -351,7 +351,7 @@ void global_alternate::ObjectToArray(v8::Handle<v8::Object> pObj, CJS_GlobalVari
CFX_WideString ws = JS_ToString(JS_GetArrayElemnet(pKeyList, i));
CFX_ByteString sKey = ws.UTF8Encode();
- v8::Handle<v8::Value> v = JS_GetObjectElement(isolate, pObj, (FX_LPCWSTR)ws);
+ v8::Handle<v8::Value> v = JS_GetObjectElement(isolate, pObj, ws.c_str());
FXJSVALUETYPE vt = GET_VALUE_TYPE(v);
switch (vt)
{