Index: fpdfsdk/src/fpdfview.cpp |
diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp |
index 84dabe68647a7cc77d357547237ee8773922ddc9..a1d84732af21585ff6c75f206ffdb5b4eeb9e01e 100644 |
--- a/fpdfsdk/src/fpdfview.cpp |
+++ b/fpdfsdk/src/fpdfview.cpp |
@@ -218,13 +218,18 @@ FPDF_LoadCustomDocument(FPDF_FILEACCESS* pFileAccess, |
DLLEXPORT FPDF_BOOL STDCALL FPDF_GetFileVersion(FPDF_DOCUMENT doc, |
int* fileVersion) { |
- if (!doc || !fileVersion) |
+ if (!fileVersion) |
return FALSE; |
+ |
*fileVersion = 0; |
- CPDF_Document* pDoc = (CPDF_Document*)doc; |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(doc); |
+ if (!pDoc) |
+ return FALSE; |
+ |
CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser(); |
if (!pParser) |
return FALSE; |
+ |
*fileVersion = pParser->GetFileVersion(); |
return TRUE; |
} |
@@ -232,45 +237,39 @@ DLLEXPORT FPDF_BOOL STDCALL FPDF_GetFileVersion(FPDF_DOCUMENT doc, |
// jabdelmalek: changed return type from FX_DWORD to build on Linux (and match |
// header). |
DLLEXPORT unsigned long STDCALL FPDF_GetDocPermissions(FPDF_DOCUMENT document) { |
- if (document == NULL) |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
+ if (!pDoc) |
return 0; |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
+ |
CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser(); |
CPDF_Dictionary* pDict = pParser->GetEncryptDict(); |
- if (pDict == NULL) |
- return (FX_DWORD)-1; |
- |
- return pDict->GetInteger("P"); |
+ return pDict ? pDict->GetInteger("P") : (FX_DWORD)-1; |
} |
DLLEXPORT int STDCALL FPDF_GetSecurityHandlerRevision(FPDF_DOCUMENT document) { |
- if (document == NULL) |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
+ if (!pDoc) |
return -1; |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
+ |
CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser(); |
CPDF_Dictionary* pDict = pParser->GetEncryptDict(); |
- if (pDict == NULL) |
- return -1; |
- |
- return pDict->GetInteger("R"); |
+ return pDict ? pDict->GetInteger("R") : -1; |
} |
DLLEXPORT int STDCALL FPDF_GetPageCount(FPDF_DOCUMENT document) { |
- if (document == NULL) |
- return 0; |
- return ((CPDF_Document*)document)->GetPageCount(); |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
+ return pDoc ? pDoc->GetPageCount() : 0; |
} |
DLLEXPORT FPDF_PAGE STDCALL FPDF_LoadPage(FPDF_DOCUMENT document, |
int page_index) { |
- if (document == NULL) |
- return NULL; |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
+ if (!pDoc) |
+ return nullptr; |
+ |
if (page_index < 0 || page_index >= FPDF_GetPageCount(document)) |
- return NULL; |
+ return nullptr; |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
- if (pDoc == NULL) |
- return NULL; |
CPDF_Dictionary* pDict = pDoc->GetPage(page_index); |
if (pDict == NULL) |
return NULL; |
@@ -513,11 +512,12 @@ DLLEXPORT void STDCALL FPDF_ClosePage(FPDF_PAGE page) { |
} |
DLLEXPORT void STDCALL FPDF_CloseDocument(FPDF_DOCUMENT document) { |
- if (!document) |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
+ if (!pDoc) |
return; |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
+ |
CPDF_Parser* pParser = (CPDF_Parser*)pDoc->GetParser(); |
- if (pParser == NULL) { |
+ if (!pParser) { |
delete pDoc; |
return; |
} |
@@ -745,12 +745,12 @@ DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, |
int page_index, |
double* width, |
double* height) { |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
- if (pDoc == NULL) |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
+ if (!pDoc) |
return FALSE; |
CPDF_Dictionary* pDict = pDoc->GetPage(page_index); |
- if (pDict == NULL) |
+ if (!pDict) |
return FALSE; |
CPDF_Page page; |
@@ -763,7 +763,7 @@ DLLEXPORT int STDCALL FPDF_GetPageSizeByIndex(FPDF_DOCUMENT document, |
DLLEXPORT FPDF_BOOL STDCALL |
FPDF_VIEWERREF_GetPrintScaling(FPDF_DOCUMENT document) { |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
if (!pDoc) |
return TRUE; |
CPDF_ViewerPreferences viewRef(pDoc); |
@@ -771,7 +771,7 @@ FPDF_VIEWERREF_GetPrintScaling(FPDF_DOCUMENT document) { |
} |
DLLEXPORT int STDCALL FPDF_VIEWERREF_GetNumCopies(FPDF_DOCUMENT document) { |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
if (!pDoc) |
return 1; |
CPDF_ViewerPreferences viewRef(pDoc); |
@@ -780,7 +780,7 @@ DLLEXPORT int STDCALL FPDF_VIEWERREF_GetNumCopies(FPDF_DOCUMENT document) { |
DLLEXPORT FPDF_PAGERANGE STDCALL |
FPDF_VIEWERREF_GetPrintPageRange(FPDF_DOCUMENT document) { |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
if (!pDoc) |
return NULL; |
CPDF_ViewerPreferences viewRef(pDoc); |
@@ -789,7 +789,7 @@ FPDF_VIEWERREF_GetPrintPageRange(FPDF_DOCUMENT document) { |
DLLEXPORT FPDF_DUPLEXTYPE STDCALL |
FPDF_VIEWERREF_GetDuplex(FPDF_DOCUMENT document) { |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
if (!pDoc) |
return DuplexUndefined; |
CPDF_ViewerPreferences viewRef(pDoc); |
@@ -804,9 +804,9 @@ FPDF_VIEWERREF_GetDuplex(FPDF_DOCUMENT document) { |
} |
DLLEXPORT FPDF_DWORD STDCALL FPDF_CountNamedDests(FPDF_DOCUMENT document) { |
- if (!document) |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
+ if (!pDoc) |
return 0; |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
CPDF_Dictionary* pRoot = pDoc->GetRoot(); |
if (!pRoot) |
@@ -822,12 +822,13 @@ DLLEXPORT FPDF_DWORD STDCALL FPDF_CountNamedDests(FPDF_DOCUMENT document) { |
DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDestByName(FPDF_DOCUMENT document, |
FPDF_BYTESTRING name) { |
- if (!document) |
- return NULL; |
if (!name || name[0] == 0) |
- return NULL; |
+ return nullptr; |
+ |
+ CPDF_Document* pDoc = CPDF_Document::FromFPDFDocument(document); |
+ if (!pDoc) |
+ return nullptr; |
- CPDF_Document* pDoc = (CPDF_Document*)document; |
CPDF_NameTree name_tree(pDoc, FX_BSTRC("Dests")); |
return name_tree.LookupNamedDest(pDoc, name); |
} |