diff options
author | Jane Liu <janeliulwq@google.com> | 2017-08-08 15:23:27 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-08-08 20:31:16 +0000 |
commit | 2e5f0ae97c163841c93c891aa5933adbde47e710 (patch) | |
tree | efb44c1e304ccf5873deaaa3f3b6316c0638b187 | |
parent | 9f0e85ac36826e39a242f8039c2b2c333ee99f4f (diff) | |
download | pdfium-2e5f0ae97c163841c93c891aa5933adbde47e710.tar.xz |
Added FPDFPageObj_Destroy() for freeing page objects created
Bug=pdfium:854
Change-Id: I227418cdcb77e0aa7d48338f1ee0d753cef6bfdb
Reviewed-on: https://pdfium-review.googlesource.com/10390
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Jane Liu <janeliulwq@google.com>
-rw-r--r-- | fpdfsdk/fpdfedit_embeddertest.cpp | 8 | ||||
-rw-r--r-- | fpdfsdk/fpdfeditpage.cpp | 4 | ||||
-rw-r--r-- | fpdfsdk/fpdfview_c_api_test.c | 1 | ||||
-rw-r--r-- | public/fpdf_edit.h | 9 |
4 files changed, 22 insertions, 0 deletions
diff --git a/fpdfsdk/fpdfedit_embeddertest.cpp b/fpdfsdk/fpdfedit_embeddertest.cpp index f1bbb87422..c381b25efa 100644 --- a/fpdfsdk/fpdfedit_embeddertest.cpp +++ b/fpdfsdk/fpdfedit_embeddertest.cpp @@ -1030,3 +1030,11 @@ TEST_F(FPDFEditEmbeddertest, GetImageData) { UnloadPage(page); } + +TEST_F(FPDFEditEmbeddertest, DestroyPageObject) { + FPDF_PAGEOBJECT rect = FPDFPageObj_CreateNewRect(10, 10, 20, 20); + ASSERT_TRUE(rect); + + // There should be no memory leaks with a call to FPDFPageObj_Destroy(). + FPDFPageObj_Destroy(rect); +} diff --git a/fpdfsdk/fpdfeditpage.cpp b/fpdfsdk/fpdfeditpage.cpp index a7ee212aee..91b966c384 100644 --- a/fpdfsdk/fpdfeditpage.cpp +++ b/fpdfsdk/fpdfeditpage.cpp @@ -201,6 +201,10 @@ DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page) { return pPage && pPage->BackgroundAlphaNeeded(); } +DLLEXPORT void STDCALL FPDFPageObj_Destroy(FPDF_PAGEOBJECT page_obj) { + delete CPDFPageObjectFromFPDFPageObject(page_obj); +} + DLLEXPORT FPDF_BOOL STDCALL FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject) { if (!pageObject) diff --git a/fpdfsdk/fpdfview_c_api_test.c b/fpdfsdk/fpdfview_c_api_test.c index d40437c278..ef5b804baa 100644 --- a/fpdfsdk/fpdfview_c_api_test.c +++ b/fpdfsdk/fpdfview_c_api_test.c @@ -121,6 +121,7 @@ int CheckPDFiumCApi() { CHK(FPDFPage_GetObject); CHK(FPDFPage_HasTransparency); CHK(FPDFPage_GenerateContent); + CHK(FPDFPageObj_Destroy); CHK(FPDFPageObj_HasTransparency); CHK(FPDFPageObj_GetBounds); CHK(FPDFPageObj_GetType); diff --git a/public/fpdf_edit.h b/public/fpdf_edit.h index dc710b5f52..aab48af3f1 100644 --- a/public/fpdf_edit.h +++ b/public/fpdf_edit.h @@ -141,6 +141,15 @@ DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page); // |FPDFPage_GenerateContent| or any changes to |page| will be lost. DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page); +// Destroy |page_obj| by releasing its resources. |page_obj| must have been +// created by FPDFPageObj_CreateNew{Path|Rect}() or +// FPDFPageObj_New{Text|Image}Obj(). This function must be called on +// newly-created objects if they are not added to a page through +// FPDFPage_InsertObject() or to an annotation through FPDFAnnot_AppendObject(). +// +// page_obj - handle to a page object. +DLLEXPORT void STDCALL FPDFPageObj_Destroy(FPDF_PAGEOBJECT page_obj); + // Checks if |page_object| contains transparency. // // page_object - handle to a page object. |