diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-01-21 14:38:33 -0800 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-01-21 14:38:33 -0800 |
commit | 9dcd7b841a6ec11b3cfff39f8d2d1f033dea9705 (patch) | |
tree | e6d363241976a3fdc85ca2f27e6035ad83e90cb8 /fpdfsdk/src/fpdfview.cpp | |
parent | dc43b322915c5256a5a9458e6b8cd28bcecf91ae (diff) | |
download | pdfium-9dcd7b841a6ec11b3cfff39f8d2d1f033dea9705.tar.xz |
Add tests for GetNamedDests() API.
Follow-on work from patch at https://codereview.chromium.org/845643008. This
incorporates that patch, plus adds tests for it and similar conditions. A few
changes are introduced to correct expected behaviour.
This also incoprorates Deepak's fix in https://codereview.chromium.org/845643008/
This incorporates a formerly unlanded tool to generate small valid PDF
files from template input, which is needed to cover all the error cases
here. See https://codereview.chromium.org/791993006/
BUG=450133
R=bo_xu@foxitsoftware.com
Review URL: https://codereview.chromium.org/837723009
Diffstat (limited to 'fpdfsdk/src/fpdfview.cpp')
-rw-r--r-- | fpdfsdk/src/fpdfview.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp index 3f6bdd94b3..fba5d65bce 100644 --- a/fpdfsdk/src/fpdfview.cpp +++ b/fpdfsdk/src/fpdfview.cpp @@ -848,8 +848,10 @@ DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, int index, pDestObj = nameTree.LookupValue(index, bsName); } if (!pDestObj) return NULL; - if (pDestObj->GetType() == PDFOBJ_DICTIONARY) + if (pDestObj->GetType() == PDFOBJ_DICTIONARY) { pDestObj = ((CPDF_Dictionary*)pDestObj)->GetArray(FX_BSTRC("D")); + if (!pDestObj) return NULL; + } if (pDestObj->GetType() != PDFOBJ_ARRAY) return NULL; CFX_WideString wsName = PDF_DecodeText(bsName); CFX_ByteString utf16Name = wsName.UTF16LE_Encode(); @@ -858,6 +860,7 @@ DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, int index, buflen = len; } else if (buflen >= len) { memcpy(buffer, utf16Name.c_str(), len); + buflen = len; } else { buflen = -1; } |