diff options
author | weili <weili@chromium.org> | 2016-08-23 21:10:57 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-08-23 21:10:57 -0700 |
commit | 0dadcc6fdab7ad1f2ee95d763f31aad5d3534f93 (patch) | |
tree | d62cd8cc5b33e8b3707bbdb6eb5bbf6269f52110 /fpdfsdk | |
parent | e07edce5b253bc4f2bef6888c5b1cbf0b320a919 (diff) | |
download | pdfium-0dadcc6fdab7ad1f2ee95d763f31aad5d3534f93.tar.xz |
Fix page leaks in an embedder test
Embedder test's delegate function GetPage() calls FPDF_LoadPage() to
load a page which may be already loaded by embedder test itself.
Thus the page's ref count is increased unnecessarily.
This causes the page to be leaked. Fix this by putting the page map in
embedder test class and guarantee the page is loaded only once.
Also, fix leaks in this embedder tests by unloading the loaded pages to
properly release the resource.
BUG=pdfium:242
Review-Url: https://codereview.chromium.org/2258333002
Diffstat (limited to 'fpdfsdk')
-rw-r--r-- | fpdfsdk/fpdfformfill_embeddertest.cpp | 2 | ||||
-rw-r--r-- | fpdfsdk/fsdk_baseform_embeddertest.cpp | 12 |
2 files changed, 10 insertions, 4 deletions
diff --git a/fpdfsdk/fpdfformfill_embeddertest.cpp b/fpdfsdk/fpdfformfill_embeddertest.cpp index 3a6a7448e5..baf4853f17 100644 --- a/fpdfsdk/fpdfformfill_embeddertest.cpp +++ b/fpdfsdk/fpdfformfill_embeddertest.cpp @@ -45,7 +45,7 @@ TEST_F(FPDFFormFillEmbeddertest, BUG_507316) { SetDelegate(&delegate); EXPECT_TRUE(OpenDocument("bug_507316.pdf")); - FPDF_PAGE page = LoadAndCachePage(2); + FPDF_PAGE page = LoadPage(2); EXPECT_TRUE(page); DoOpenActions(); delegate.AdvanceTime(4000); diff --git a/fpdfsdk/fsdk_baseform_embeddertest.cpp b/fpdfsdk/fsdk_baseform_embeddertest.cpp index 622f1a8c04..7af8262c55 100644 --- a/fpdfsdk/fsdk_baseform_embeddertest.cpp +++ b/fpdfsdk/fsdk_baseform_embeddertest.cpp @@ -26,9 +26,12 @@ class FSDKBaseFormEmbeddertest : public EmbedderTest {}; TEST_F(FSDKBaseFormEmbeddertest, CBA_AnnotIterator) { EXPECT_TRUE(OpenDocument("annotiter.pdf")); - EXPECT_TRUE(LoadPage(0)); - EXPECT_TRUE(LoadPage(1)); - EXPECT_TRUE(LoadPage(2)); + FPDF_PAGE page0 = LoadPage(0); + FPDF_PAGE page1 = LoadPage(1); + FPDF_PAGE page2 = LoadPage(2); + EXPECT_TRUE(page0); + EXPECT_TRUE(page1); + EXPECT_TRUE(page2); CFX_FloatRect LeftBottom(200, 200, 220, 220); CFX_FloatRect RightBottom(400, 201, 420, 221); @@ -112,4 +115,7 @@ TEST_F(FSDKBaseFormEmbeddertest, CBA_AnnotIterator) { pAnnot = iter.GetPrevAnnot(pAnnot); EXPECT_EQ(iter.GetLastAnnot(), pAnnot); } + UnloadPage(page2); + UnloadPage(page1); + UnloadPage(page0); } |