Index: fpdfsdk/src/fpdfdoc.cpp |
diff --git a/fpdfsdk/src/fpdfdoc.cpp b/fpdfsdk/src/fpdfdoc.cpp |
index b7702956047e00d7dfabc30a134573b4298208b4..ad8ef8bea38070df46d49fd23d93d1b52804fbe1 100644 |
--- a/fpdfsdk/src/fpdfdoc.cpp |
+++ b/fpdfsdk/src/fpdfdoc.cpp |
@@ -56,7 +56,8 @@ FPDFBookmark_GetFirstChild(FPDF_DOCUMENT document, FPDF_BOOKMARK pDict) { |
if (!pDoc) |
return nullptr; |
CPDF_BookmarkTree tree(pDoc); |
- CPDF_Bookmark bookmark = CPDF_Bookmark((CPDF_Dictionary*)pDict); |
+ CPDF_Bookmark bookmark = |
+ CPDF_Bookmark(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
return tree.GetFirstChild(bookmark).GetDict(); |
} |
@@ -68,7 +69,8 @@ FPDFBookmark_GetNextSibling(FPDF_DOCUMENT document, FPDF_BOOKMARK pDict) { |
if (!pDoc) |
return nullptr; |
CPDF_BookmarkTree tree(pDoc); |
- CPDF_Bookmark bookmark = CPDF_Bookmark((CPDF_Dictionary*)pDict); |
+ CPDF_Bookmark bookmark = |
+ CPDF_Bookmark(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
return tree.GetNextSibling(bookmark).GetDict(); |
} |
@@ -77,7 +79,7 @@ DLLEXPORT unsigned long STDCALL FPDFBookmark_GetTitle(FPDF_BOOKMARK pDict, |
unsigned long buflen) { |
if (!pDict) |
return 0; |
- CPDF_Bookmark bookmark((CPDF_Dictionary*)pDict); |
+ CPDF_Bookmark bookmark(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
CFX_WideString title = bookmark.GetTitle(); |
CFX_ByteString encodedTitle = title.UTF16LE_Encode(); |
unsigned long len = encodedTitle.GetLength(); |
@@ -107,7 +109,7 @@ DLLEXPORT FPDF_DEST STDCALL FPDFBookmark_GetDest(FPDF_DOCUMENT document, |
CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); |
if (!pDoc) |
return nullptr; |
- CPDF_Bookmark bookmark((CPDF_Dictionary*)pDict); |
+ CPDF_Bookmark bookmark(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
CPDF_Dest dest = bookmark.GetDest(pDoc); |
if (dest) |
return dest.GetObject(); |
@@ -122,7 +124,7 @@ DLLEXPORT FPDF_DEST STDCALL FPDFBookmark_GetDest(FPDF_DOCUMENT document, |
DLLEXPORT FPDF_ACTION STDCALL FPDFBookmark_GetAction(FPDF_BOOKMARK pDict) { |
if (!pDict) |
return NULL; |
- CPDF_Bookmark bookmark((CPDF_Dictionary*)pDict); |
+ CPDF_Bookmark bookmark(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
return bookmark.GetAction().GetDict(); |
} |
@@ -130,7 +132,7 @@ DLLEXPORT unsigned long STDCALL FPDFAction_GetType(FPDF_ACTION pDict) { |
if (!pDict) |
return PDFACTION_UNSUPPORTED; |
- CPDF_Action action((CPDF_Dictionary*)pDict); |
+ CPDF_Action action(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
CPDF_Action::ActionType type = action.GetType(); |
switch (type) { |
case CPDF_Action::GoTo: |
@@ -153,7 +155,7 @@ DLLEXPORT FPDF_DEST STDCALL FPDFAction_GetDest(FPDF_DOCUMENT document, |
CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); |
if (!pDoc) |
return nullptr; |
- CPDF_Action action((CPDF_Dictionary*)pDict); |
+ CPDF_Action action(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
return action.GetDest(pDoc).GetObject(); |
} |
@@ -163,7 +165,7 @@ FPDFAction_GetFilePath(FPDF_ACTION pDict, void* buffer, unsigned long buflen) { |
if (type != PDFACTION_REMOTEGOTO && type != PDFACTION_LAUNCH) |
return 0; |
- CPDF_Action action((CPDF_Dictionary*)pDict); |
+ CPDF_Action action(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
CFX_ByteString path = action.GetFilePath().UTF8Encode(); |
unsigned long len = path.GetLength() + 1; |
if (buffer && buflen >= len) |
@@ -180,7 +182,7 @@ DLLEXPORT unsigned long STDCALL FPDFAction_GetURIPath(FPDF_DOCUMENT document, |
CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); |
if (!pDoc) |
return 0; |
- CPDF_Action action((CPDF_Dictionary*)pDict); |
+ CPDF_Action action(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
CFX_ByteString path = action.GetURI(pDoc); |
unsigned long len = path.GetLength() + 1; |
if (buffer && buflen >= len) |
@@ -235,7 +237,7 @@ DLLEXPORT FPDF_DEST STDCALL FPDFLink_GetDest(FPDF_DOCUMENT document, |
CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); |
if (!pDoc) |
return nullptr; |
- CPDF_Link link((CPDF_Dictionary*)pDict); |
+ CPDF_Link link(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
FPDF_DEST dest = link.GetDest(pDoc).GetObject(); |
if (dest) |
return dest; |
@@ -250,7 +252,7 @@ DLLEXPORT FPDF_ACTION STDCALL FPDFLink_GetAction(FPDF_LINK pDict) { |
if (!pDict) |
return nullptr; |
- CPDF_Link link((CPDF_Dictionary*)pDict); |
+ CPDF_Link link(ToDictionary(static_cast<CPDF_Object*>(pDict))); |
return link.GetAction().GetDict(); |
} |
@@ -266,8 +268,9 @@ DLLEXPORT FPDF_BOOL STDCALL FPDFLink_Enumerate(FPDF_PAGE page, |
if (!pAnnots) |
return FALSE; |
for (int i = *startPos; i < (int)pAnnots->GetCount(); i++) { |
- CPDF_Dictionary* pDict = (CPDF_Dictionary*)pAnnots->GetElementValue(i); |
- if (!pDict || pDict->GetType() != PDFOBJ_DICTIONARY) |
+ CPDF_Dictionary* pDict = |
+ ToDictionary(static_cast<CPDF_Object*>(pAnnots->GetElementValue(i))); |
+ if (!pDict) |
continue; |
if (pDict->GetString(FX_BSTRC("Subtype")).Equal(FX_BSTRC("Link"))) { |
*startPos = i + 1; |
@@ -282,7 +285,8 @@ DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot, |
FS_RECTF* rect) { |
if (!linkAnnot || !rect) |
return FALSE; |
- CPDF_Dictionary* pAnnotDict = (CPDF_Dictionary*)linkAnnot; |
+ CPDF_Dictionary* pAnnotDict = |
+ ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); |
CPDF_Rect rt = pAnnotDict->GetRect(FX_BSTRC("Rect")); |
rect->left = rt.left; |
rect->bottom = rt.bottom; |
@@ -294,7 +298,8 @@ DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetAnnotRect(FPDF_LINK linkAnnot, |
DLLEXPORT int STDCALL FPDFLink_CountQuadPoints(FPDF_LINK linkAnnot) { |
if (!linkAnnot) |
return 0; |
- CPDF_Dictionary* pAnnotDict = (CPDF_Dictionary*)linkAnnot; |
+ CPDF_Dictionary* pAnnotDict = |
+ ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); |
CPDF_Array* pArray = pAnnotDict->GetArray(FX_BSTRC("QuadPoints")); |
if (!pArray) |
return 0; |
@@ -306,7 +311,8 @@ DLLEXPORT FPDF_BOOL STDCALL FPDFLink_GetQuadPoints(FPDF_LINK linkAnnot, |
FS_QUADPOINTSF* quadPoints) { |
if (!linkAnnot || !quadPoints) |
return FALSE; |
- CPDF_Dictionary* pAnnotDict = (CPDF_Dictionary*)linkAnnot; |
+ CPDF_Dictionary* pAnnotDict = |
+ ToDictionary(static_cast<CPDF_Object*>(linkAnnot)); |
CPDF_Array* pArray = pAnnotDict->GetArray(FX_BSTRC("QuadPoints")); |
if (pArray) { |
if (quadIndex < 0 || quadIndex >= (int)pArray->GetCount() / 8 || |