summaryrefslogtreecommitdiff
path: root/fpdfsdk/src/fpdfview.cpp
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2015-01-21 14:38:33 -0800
committerTom Sepez <tsepez@chromium.org>2015-01-21 14:38:33 -0800
commit9dcd7b841a6ec11b3cfff39f8d2d1f033dea9705 (patch)
treee6d363241976a3fdc85ca2f27e6035ad83e90cb8 /fpdfsdk/src/fpdfview.cpp
parentdc43b322915c5256a5a9458e6b8cd28bcecf91ae (diff)
downloadpdfium-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.cpp5
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;
}