summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-06-02 17:00:05 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-06-02 17:00:05 +0000
commit38cb7263a0923dd5613da24b18d3d7ef052ff5e3 (patch)
tree5aa01a15db74d196679b87cf1079817e5a3c5aa1
parent67539cecfeb140d5a77fba66446450cb9e20fb1e (diff)
downloadpdfium-chromium/3448.tar.xz
Remove more ifndef XFA caseschromium/3449chromium/3448
Remove FXFT_Clear_Face_External_Stream() calls, period. This would cause FT to try to free memory allocated by the caller, with potentially a different allocator. If we're leaking, msan will find it, and we can deal with it properly rather than trying to force FT to tidy after us. Always call SetView(), if we have a PDF page. At worst, the link won't be used in the XFA case. Always return 0 for the null document permissions. If we don't have a document, then we can't dynamically tell if its an XFA doc, so there's no reason to believe it should have all permissions. If there is an XFA doc under the covers, then the extension will give us the value. Change-Id: I6e3fb589eda722786567d96288cb35f43643437b Reviewed-on: https://pdfium-review.googlesource.com/33370 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
-rw-r--r--core/fxge/cfx_font.cpp9
-rw-r--r--fpdfsdk/cpdfsdk_pageview.cpp15
-rw-r--r--fpdfsdk/fpdf_view.cpp11
3 files changed, 10 insertions, 25 deletions
diff --git a/core/fxge/cfx_font.cpp b/core/fxge/cfx_font.cpp
index bee1d789ef..08e33d6397 100644
--- a/core/fxge/cfx_font.cpp
+++ b/core/fxge/cfx_font.cpp
@@ -317,14 +317,9 @@ void CFX_Font::SetSubstFont(std::unique_ptr<CFX_SubstFont> subst) {
#endif // PDF_ENABLE_XFA
CFX_Font::~CFX_Font() {
- if (m_Face) {
-#ifndef PDF_ENABLE_XFA
- if (FXFT_Get_Face_External_Stream(m_Face)) {
- FXFT_Clear_Face_External_Stream(m_Face);
- }
-#endif // PDF_ENABLE_XFA
+ if (m_Face)
DeleteFace();
- }
+
#if _FX_PLATFORM_ == _FX_PLATFORM_APPLE_
ReleasePlatformResource();
#endif
diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp
index 5cb5f2ced2..06d197dfba 100644
--- a/fpdfsdk/cpdfsdk_pageview.cpp
+++ b/fpdfsdk/cpdfsdk_pageview.cpp
@@ -38,19 +38,18 @@ CPDFSDK_PageView::CPDFSDK_PageView(CPDFSDK_FormFillEnvironment* pFormFillEnv,
CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm();
CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
pPDFInterForm->FixPageFields(pPDFPage);
-#ifndef PDF_ENABLE_XFA
pPDFPage->SetView(this);
-#endif // PDF_ENABLE_XFA
}
}
CPDFSDK_PageView::~CPDFSDK_PageView() {
-#ifndef PDF_ENABLE_XFA
- // The call to |ReleaseAnnot| can cause the page pointed to by |m_page| to
- // be freed, which will cause issues if we try to cleanup the pageview pointer
- // in |m_page|. So, reset the pageview pointer before doing anything else.
- m_page->AsPDFPage()->SetView(nullptr);
-#endif // PDF_ENABLE_XFA
+ CPDF_Page* pPDFPage = ToPDFPage(m_page);
+ if (pPDFPage) {
+ // The call to |ReleaseAnnot| can cause the page pointed to by |m_page| to
+ // be freed, which will cause issues if we try to cleanup the pageview ptr
+ // in |m_page|. So, reset the pageview pointer before doing anything else.
+ pPDFPage->SetView(nullptr);
+ }
CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
m_pFormFillEnv->GetAnnotHandlerMgr();
diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp
index 91072d2f51..feffaeb71c 100644
--- a/fpdfsdk/fpdf_view.cpp
+++ b/fpdfsdk/fpdf_view.cpp
@@ -308,16 +308,7 @@ FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDF_GetFileVersion(FPDF_DOCUMENT doc,
FPDF_EXPORT unsigned long FPDF_CALLCONV
FPDF_GetDocPermissions(FPDF_DOCUMENT document) {
CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document);
- // https://bugs.chromium.org/p/pdfium/issues/detail?id=499
- if (!pDoc) {
-#ifndef PDF_ENABLE_XFA
- return 0;
-#else // PDF_ENABLE_XFA
- return 0xFFFFFFFF;
-#endif // PDF_ENABLE_XFA
- }
-
- return pDoc->GetUserPermissions();
+ return pDoc ? pDoc->GetUserPermissions() : 0;
}
FPDF_EXPORT int FPDF_CALLCONV