From 8e53c8c8e19a1f40d90f47068c7dd7ee6ffa275d Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Tue, 6 Feb 2018 00:18:12 +0000 Subject: Fix an infinite recursion in pdfium_test. Mark pages as loaded before calling FORM_DoPageAAction(). BUG=chromium:808898 Change-Id: I82c481ba759842ea794b5578120101465b37f16a Reviewed-on: https://pdfium-review.googlesource.com/25511 Commit-Queue: Lei Zhang Reviewed-by: Tom Sepez --- samples/pdfium_test.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc index 707fbb1028..ebc7412055 100644 --- a/samples/pdfium_test.cc +++ b/samples/pdfium_test.cc @@ -987,15 +987,18 @@ FPDF_PAGE GetPageForIndex(FPDF_FORMFILLINFO* param, if (iter != loaded_pages.end()) return iter->second.get(); - FPDF_PAGE page = FPDF_LoadPage(doc, index); + std::unique_ptr page(FPDF_LoadPage(doc, index)); if (!page) return nullptr; + // Mark the page as loaded first to prevent infinite recursion. + FPDF_PAGE page_ptr = page.get(); + loaded_pages[index] = std::move(page); + FPDF_FORMHANDLE& form_handle = form_fill_info->form_handle; - FORM_OnAfterLoadPage(page, form_handle); - FORM_DoPageAAction(page, form_handle, FPDFPAGE_AACTION_OPEN); - loaded_pages[index].reset(page); - return page; + FORM_OnAfterLoadPage(page_ptr, form_handle); + FORM_DoPageAAction(page_ptr, form_handle, FPDFPAGE_AACTION_OPEN); + return page_ptr; } std::wstring ConvertToWString(const unsigned short* buf, -- cgit v1.2.3