Chromium Code Reviews| Index: core/src/fpdfdoc/doc_bookmark.cpp |
| diff --git a/core/src/fpdfdoc/doc_bookmark.cpp b/core/src/fpdfdoc/doc_bookmark.cpp |
| index 9814de61bff20414fa7847194ef9c1aeb05ab3df..374a51b2efd596aa1f08c6341a091bafa3edd77b 100644 |
| --- a/core/src/fpdfdoc/doc_bookmark.cpp |
| +++ b/core/src/fpdfdoc/doc_bookmark.cpp |
| @@ -4,7 +4,11 @@ |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| +#include <vector> |
| + |
| +#include "../../../third_party/base/nonstd_unique_ptr.h" |
| #include "../../include/fpdfdoc/fpdf_doc.h" |
| + |
| CPDF_Bookmark CPDF_BookmarkTree::GetFirstChild(const CPDF_Bookmark& parent) const |
| { |
| if (!parent.m_pDict) { |
| @@ -55,15 +59,15 @@ CFX_WideString CPDF_Bookmark::GetTitle() const |
| return CFX_WideString(); |
| } |
| CFX_WideString title = pString->GetUnicodeText(); |
| - FX_LPWSTR buf = title.LockBuffer(); |
| int len = title.GetLength(); |
| + nonstd::unique_ptr<std::vector<FX_WCHAR> > vec; |
| + vec.reset(new std::vector<FX_WCHAR>(len)); |
| + FX_WCHAR* buf = &vec->front(); |
|
Lei Zhang
2015/04/27 22:50:46
Can we first check |len| and just return a CFX_Wid
Tom Sepez
2015/04/28 19:02:20
Done.
|
| for (int i = 0; i < len; i++) { |
| - if (buf[i] < 0x20) { |
| - buf[i] = 0x20; |
| - } |
| + FX_WCHAR w = title[i]; |
| + buf[i] = w > 0x20 ? w : 0x20; |
| } |
| - title.ReleaseBuffer(len); |
| - return title; |
| + return CFX_WideString(buf, len); |
| } |
| CPDF_Dest CPDF_Bookmark::GetDest(CPDF_Document* pDocument) const |
| { |