diff options
author | tsepez <tsepez@chromium.org> | 2016-04-08 09:00:35 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-08 09:00:35 -0700 |
commit | 8b36e5cc3d5f5f579c6b060e2c40b896a4b02bc0 (patch) | |
tree | f84a20d330d92b791d0322f424cb155816d77d1b /core | |
parent | 8da140e8747920057a2f2bbcf5c78e40bb198733 (diff) | |
download | pdfium-8b36e5cc3d5f5f579c6b060e2c40b896a4b02bc0.tar.xz |
Make CFX_WideString::FromLocal() take a CFX_ByteStringC arg
It doesn't persist the string beyond the duration of the
call, hence it should take the *StringC variant. Doing so
avoids some allocs by changing to the *StringC ctor in a few
places, at the cost of some explicit .ToByteStringC() calls
(which are cheap).
Review URL: https://codereview.chromium.org/1862953004
Diffstat (limited to 'core')
-rw-r--r-- | core/fpdfdoc/doc_action.cpp | 3 | ||||
-rw-r--r-- | core/fpdfdoc/doc_basic.cpp | 14 | ||||
-rw-r--r-- | core/fpdfdoc/doc_form.cpp | 5 | ||||
-rw-r--r-- | core/fxcrt/fx_basic_bstring.cpp | 2 | ||||
-rw-r--r-- | core/fxcrt/fx_basic_wstring.cpp | 13 | ||||
-rw-r--r-- | core/fxcrt/fx_extension.cpp | 2 | ||||
-rw-r--r-- | core/fxcrt/include/fx_basic.h | 4 | ||||
-rw-r--r-- | core/fxcrt/include/fx_string.h | 4 |
8 files changed, 27 insertions, 20 deletions
diff --git a/core/fpdfdoc/doc_action.cpp b/core/fpdfdoc/doc_action.cpp index c3ab552606..075849482c 100644 --- a/core/fpdfdoc/doc_action.cpp +++ b/core/fpdfdoc/doc_action.cpp @@ -73,7 +73,8 @@ CFX_WideString CPDF_Action::GetFilePath() const { if (type == "Launch") { CPDF_Dictionary* pWinDict = m_pDict->GetDictBy("Win"); if (pWinDict) { - return CFX_WideString::FromLocal(pWinDict->GetStringBy("F")); + return CFX_WideString::FromLocal( + pWinDict->GetStringBy("F").AsByteStringC()); } } return path; diff --git a/core/fpdfdoc/doc_basic.cpp b/core/fpdfdoc/doc_basic.cpp index 9318387f7f..308bf04287 100644 --- a/core/fpdfdoc/doc_basic.cpp +++ b/core/fpdfdoc/doc_basic.cpp @@ -315,23 +315,27 @@ bool CPDF_FileSpec::GetFileName(CFX_WideString* csFileName) const { if (CPDF_Dictionary* pDict = m_pObj->AsDictionary()) { *csFileName = pDict->GetUnicodeTextBy("UF"); if (csFileName->IsEmpty()) { - *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("F")); + *csFileName = CFX_WideString::FromLocal(pDict->GetConstStringBy("F")); } if (pDict->GetStringBy("FS") == "URL") return true; if (csFileName->IsEmpty()) { if (pDict->KeyExist("DOS")) { - *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("DOS")); + *csFileName = CFX_WideString::FromLocal( + pDict->GetStringBy("DOS").AsByteStringC()); } else if (pDict->KeyExist("Mac")) { - *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("Mac")); + *csFileName = CFX_WideString::FromLocal( + pDict->GetStringBy("Mac").AsByteStringC()); } else if (pDict->KeyExist("Unix")) { - *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("Unix")); + *csFileName = CFX_WideString::FromLocal( + pDict->GetStringBy("Unix").AsByteStringC()); } else { return false; } } } else if (m_pObj->IsString()) { - *csFileName = CFX_WideString::FromLocal(m_pObj->GetString()); + *csFileName = + CFX_WideString::FromLocal(m_pObj->GetString().AsByteStringC()); } else { return false; } diff --git a/core/fpdfdoc/doc_form.cpp b/core/fpdfdoc/doc_form.cpp index 80c09714a2..384bcaa435 100644 --- a/core/fpdfdoc/doc_form.cpp +++ b/core/fpdfdoc/doc_form.cpp @@ -35,12 +35,13 @@ CFX_WideString FPDFDOC_FDF_GetFieldValue(const CPDF_Dictionary& pFieldDict, const CFX_ByteString csBValue = pFieldDict.GetStringBy("V"); for (const auto& encoding : g_fieldEncoding) { if (bsEncoding == encoding.m_name) - return CFX_WideString::FromCodePage(csBValue, encoding.m_codePage); + return CFX_WideString::FromCodePage(csBValue.AsByteStringC(), + encoding.m_codePage); } CFX_ByteString csTemp = csBValue.Left(2); if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF") return PDF_DecodeText(csBValue); - return CFX_WideString::FromLocal(csBValue); + return CFX_WideString::FromLocal(csBValue.AsByteStringC()); } } // namespace diff --git a/core/fxcrt/fx_basic_bstring.cpp b/core/fxcrt/fx_basic_bstring.cpp index 2c2264a419..cc0dfe2341 100644 --- a/core/fxcrt/fx_basic_bstring.cpp +++ b/core/fxcrt/fx_basic_bstring.cpp @@ -824,7 +824,7 @@ CFX_ByteString CFX_ByteString::FromUnicode(const FX_WCHAR* str, // static CFX_ByteString CFX_ByteString::FromUnicode(const CFX_WideString& str) { - return CFX_CharMap::GetByteString(0, str); + return CFX_CharMap::GetByteString(0, str.AsWideStringC()); } int CFX_ByteString::Compare(const CFX_ByteStringC& str) const { diff --git a/core/fxcrt/fx_basic_wstring.cpp b/core/fxcrt/fx_basic_wstring.cpp index e2e122be9a..b5ccaf6da5 100644 --- a/core/fxcrt/fx_basic_wstring.cpp +++ b/core/fxcrt/fx_basic_wstring.cpp @@ -747,12 +747,12 @@ void CFX_WideString::SetAt(FX_STRSIZE nIndex, FX_WCHAR ch) { } // static -CFX_WideString CFX_WideString::FromLocal(const CFX_ByteString& str) { +CFX_WideString CFX_WideString::FromLocal(const CFX_ByteStringC& str) { return FromCodePage(str, 0); } // static -CFX_WideString CFX_WideString::FromCodePage(const CFX_ByteString& str, +CFX_WideString CFX_WideString::FromCodePage(const CFX_ByteStringC& str, uint16_t codepage) { return CFX_CharMap::GetWideString(codepage, str); } @@ -943,7 +943,7 @@ FX_FLOAT CFX_WideString::GetFloat() const { // static CFX_ByteString CFX_CharMap::GetByteString(uint16_t codepage, - const CFX_WideString& wstr) { + const CFX_WideStringC& wstr) { FXSYS_assert(IsValidCodePage(codepage)); int src_len = wstr.GetLength(); int dest_len = FXSYS_WideCharToMultiByte(codepage, 0, wstr.c_str(), src_len, @@ -960,15 +960,16 @@ CFX_ByteString CFX_CharMap::GetByteString(uint16_t codepage, // static CFX_WideString CFX_CharMap::GetWideString(uint16_t codepage, - const CFX_ByteString& bstr) { + const CFX_ByteStringC& bstr) { FXSYS_assert(IsValidCodePage(codepage)); int src_len = bstr.GetLength(); int dest_len = - FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, nullptr, 0); + FXSYS_MultiByteToWideChar(codepage, 0, bstr.c_str(), src_len, nullptr, 0); CFX_WideString wstr; if (dest_len) { FX_WCHAR* dest_buf = wstr.GetBuffer(dest_len); - FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, dest_buf, dest_len); + FXSYS_MultiByteToWideChar(codepage, 0, bstr.c_str(), src_len, dest_buf, + dest_len); wstr.ReleaseBuffer(dest_len); } return wstr; diff --git a/core/fxcrt/fx_extension.cpp b/core/fxcrt/fx_extension.cpp index 7e8029baba..f1fd980120 100644 --- a/core/fxcrt/fx_extension.cpp +++ b/core/fxcrt/fx_extension.cpp @@ -134,7 +134,7 @@ FX_FLOAT FXSYS_strtof(const FX_CHAR* pcsStr, iLength = (int32_t)FXSYS_strlen(pcsStr); } CFX_WideString ws = - CFX_WideString::FromLocal(CFX_ByteString(pcsStr, iLength)); + CFX_WideString::FromLocal(CFX_ByteStringC(pcsStr, iLength)); return FXSYS_wcstof(ws.c_str(), iLength, pUsedLen); } FX_FLOAT FXSYS_wcstof(const FX_WCHAR* pwsStr, diff --git a/core/fxcrt/include/fx_basic.h b/core/fxcrt/include/fx_basic.h index 744b2dd10f..1cb5174351 100644 --- a/core/fxcrt/include/fx_basic.h +++ b/core/fxcrt/include/fx_basic.h @@ -186,10 +186,10 @@ class CFX_FileBufferArchive { class CFX_CharMap { public: static CFX_ByteString GetByteString(uint16_t codepage, - const CFX_WideString& wstr); + const CFX_WideStringC& wstr); static CFX_WideString GetWideString(uint16_t codepage, - const CFX_ByteString& bstr); + const CFX_ByteStringC& bstr); CFX_CharMap() = delete; }; diff --git a/core/fxcrt/include/fx_string.h b/core/fxcrt/include/fx_string.h index 382e141dc2..8a0b3ff3db 100644 --- a/core/fxcrt/include/fx_string.h +++ b/core/fxcrt/include/fx_string.h @@ -497,8 +497,8 @@ class CFX_WideString { ~CFX_WideString(); - static CFX_WideString FromLocal(const CFX_ByteString& str); - static CFX_WideString FromCodePage(const CFX_ByteString& str, + static CFX_WideString FromLocal(const CFX_ByteStringC& str); + static CFX_WideString FromCodePage(const CFX_ByteStringC& str, uint16_t codepage); static CFX_WideString FromUTF8(const CFX_ByteStringC& str); |