From 8e54f192f977824744cd14f04b6f35b79e0c42be Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 21 Sep 2018 18:11:47 +0000 Subject: Fix destruction order with CPDF_StreamAcc. Commit d39389f6 changed CPDF_StreamAcc to use MaybeOwned, so now callers have to destroy it more carefully, so CPDF_StreamAcc does not end up with a dangling pointer. BUG=chromium:887626 Change-Id: Id5e7af96aad6270c444485c1574182da5dbd9ebf Reviewed-on: https://pdfium-review.googlesource.com/42893 Reviewed-by: Tom Sepez Commit-Queue: Lei Zhang --- fpdfsdk/fpdf_flatten.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'fpdfsdk/fpdf_flatten.cpp') diff --git a/fpdfsdk/fpdf_flatten.cpp b/fpdfsdk/fpdf_flatten.cpp index cca28bc300..01f3cd7e1e 100644 --- a/fpdfsdk/fpdf_flatten.cpp +++ b/fpdfsdk/fpdf_flatten.cpp @@ -200,11 +200,13 @@ void SetPageContents(const ByteString& key, pPage->ConvertToIndirectObjectFor(pdfium::page_object::kContents, pDocument); if (!pContentsArray) { pContentsArray = pDocument->NewIndirect(); - auto pAcc = pdfium::MakeRetain(pContentsStream); - pAcc->LoadAllDataFiltered(); ByteString sStream = "q\n"; - ByteString sBody = ByteString(pAcc->GetData(), pAcc->GetSize()); - sStream = sStream + sBody + "\nQ"; + { + auto pAcc = pdfium::MakeRetain(pContentsStream); + pAcc->LoadAllDataFiltered(); + sStream += ByteString(pAcc->GetData(), pAcc->GetSize()); + sStream += "\nQ"; + } pContentsStream->SetDataAndRemoveFilter(sStream.AsRawSpan()); pContentsArray->Add(pContentsStream->MakeReference(pDocument)); pPage->SetFor(pdfium::page_object::kContents, -- cgit v1.2.3