From 9dcd7b841a6ec11b3cfff39f8d2d1f033dea9705 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Wed, 21 Jan 2015 14:38:33 -0800 Subject: 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 --- fpdfsdk/src/fpdfview.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'fpdfsdk/src/fpdfview.cpp') 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; } -- cgit v1.2.3