| 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..6ba98e655dff5e55a6ce575046a89f3ad560170e 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,18 @@ CFX_WideString CPDF_Bookmark::GetTitle() const
|
| return CFX_WideString();
|
| }
|
| CFX_WideString title = pString->GetUnicodeText();
|
| - FX_LPWSTR buf = title.LockBuffer();
|
| int len = title.GetLength();
|
| + if (!len) {
|
| + return CFX_WideString();
|
| + }
|
| + nonstd::unique_ptr<std::vector<FX_WCHAR> > vec;
|
| + vec.reset(new std::vector<FX_WCHAR>(len));
|
| + FX_WCHAR* buf = &vec->front();
|
| 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
|
| {
|
|
|