| Index: fpdfsdk/fpdf_transformpage.cpp
|
| diff --git a/fpdfsdk/fpdf_transformpage.cpp b/fpdfsdk/fpdf_transformpage.cpp
|
| index 76be4de092322de90aa2f8026bb84065383741c2..beaa6c4d982e9b1915afea0a76a3f2cfaaa31c4d 100644
|
| --- a/fpdfsdk/fpdf_transformpage.cpp
|
| +++ b/fpdfsdk/fpdf_transformpage.cpp
|
| @@ -27,10 +27,10 @@ void SetBoundingBox(CPDF_Page* page,
|
| float right,
|
| float top) {
|
| CPDF_Array* pBoundingBoxArray = new CPDF_Array;
|
| - pBoundingBoxArray->Add(new CPDF_Number(left));
|
| - pBoundingBoxArray->Add(new CPDF_Number(bottom));
|
| - pBoundingBoxArray->Add(new CPDF_Number(right));
|
| - pBoundingBoxArray->Add(new CPDF_Number(top));
|
| + pBoundingBoxArray->AddNew<CPDF_Number>(left);
|
| + pBoundingBoxArray->AddNew<CPDF_Number>(bottom);
|
| + pBoundingBoxArray->AddNew<CPDF_Number>(right);
|
| + pBoundingBoxArray->AddNew<CPDF_Number>(top);
|
| page->m_pFormDict->SetFor(key, pBoundingBoxArray);
|
| }
|
|
|
| @@ -142,23 +142,22 @@ DLLEXPORT FPDF_BOOL STDCALL FPDFPage_TransFormWithClip(FPDF_PAGE page,
|
| CPDF_Array* pArray = ToArray(pContentObj);
|
| if (pArray) {
|
| pContentArray = pArray;
|
| - CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
|
| - pContentArray->InsertAt(0, pRef);
|
| - pContentArray->AddReference(pDoc, pEndStream->GetObjNum());
|
| + pContentArray->InsertNewAt<CPDF_Reference>(0, pDoc, pStream->GetObjNum());
|
| + pContentArray->AddNew<CPDF_Reference>(pDoc, pEndStream->GetObjNum());
|
| } else if (CPDF_Reference* pReference = ToReference(pContentObj)) {
|
| CPDF_Object* pDirectObj = pReference->GetDirect();
|
| if (pDirectObj) {
|
| CPDF_Array* pObjArray = pDirectObj->AsArray();
|
| if (pObjArray) {
|
| pContentArray = pObjArray;
|
| - CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
|
| - pContentArray->InsertAt(0, pRef);
|
| - pContentArray->AddReference(pDoc, pEndStream->GetObjNum());
|
| + pContentArray->InsertNewAt<CPDF_Reference>(0, pDoc,
|
| + pStream->GetObjNum());
|
| + pContentArray->AddNew<CPDF_Reference>(pDoc, pEndStream->GetObjNum());
|
| } else if (pDirectObj->IsStream()) {
|
| pContentArray = pDoc->NewIndirect<CPDF_Array>();
|
| - pContentArray->AddReference(pDoc, pStream->GetObjNum());
|
| - pContentArray->AddReference(pDoc, pDirectObj->GetObjNum());
|
| - pContentArray->AddReference(pDoc, pEndStream->GetObjNum());
|
| + pContentArray->AddNew<CPDF_Reference>(pDoc, pStream->GetObjNum());
|
| + pContentArray->AddNew<CPDF_Reference>(pDoc, pDirectObj->GetObjNum());
|
| + pContentArray->AddNew<CPDF_Reference>(pDoc, pEndStream->GetObjNum());
|
| pPageDic->SetReferenceFor("Contents", pDoc, pContentArray);
|
| }
|
| }
|
| @@ -307,26 +306,28 @@ DLLEXPORT void STDCALL FPDFPage_InsertClipPath(FPDF_PAGE page,
|
| CPDF_Stream* pStream = pDoc->NewIndirect<CPDF_Stream>(nullptr, 0, pDic);
|
| pStream->SetData(strClip.GetBuffer(), strClip.GetSize());
|
|
|
| - CPDF_Array* pContentArray = nullptr;
|
| CPDF_Array* pArray = ToArray(pContentObj);
|
| if (pArray) {
|
| - pContentArray = pArray;
|
| - CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
|
| - pContentArray->InsertAt(0, pRef);
|
| - } else if (CPDF_Reference* pReference = ToReference(pContentObj)) {
|
| - CPDF_Object* pDirectObj = pReference->GetDirect();
|
| - if (pDirectObj) {
|
| - CPDF_Array* pObjArray = pDirectObj->AsArray();
|
| - if (pObjArray) {
|
| - pContentArray = pObjArray;
|
| - CPDF_Reference* pRef = new CPDF_Reference(pDoc, pStream->GetObjNum());
|
| - pContentArray->InsertAt(0, pRef);
|
| - } else if (pDirectObj->IsStream()) {
|
| - pContentArray = pDoc->NewIndirect<CPDF_Array>();
|
| - pContentArray->AddReference(pDoc, pStream->GetObjNum());
|
| - pContentArray->AddReference(pDoc, pDirectObj->GetObjNum());
|
| - pPageDic->SetReferenceFor("Contents", pDoc, pContentArray);
|
| - }
|
| - }
|
| + pArray->InsertNewAt<CPDF_Reference>(0, pDoc, pStream->GetObjNum());
|
| + return;
|
| + }
|
| + CPDF_Reference* pReference = ToReference(pContentObj);
|
| + if (!pReference)
|
| + return;
|
| +
|
| + CPDF_Object* pDirectObj = pReference->GetDirect();
|
| + if (!pDirectObj)
|
| + return;
|
| +
|
| + CPDF_Array* pObjArray = pDirectObj->AsArray();
|
| + if (pObjArray) {
|
| + pObjArray->InsertNewAt<CPDF_Reference>(0, pDoc, pStream->GetObjNum());
|
| + return;
|
| + }
|
| + if (pDirectObj->IsStream()) {
|
| + CPDF_Array* pContentArray = pDoc->NewIndirect<CPDF_Array>();
|
| + pContentArray->AddNew<CPDF_Reference>(pDoc, pStream->GetObjNum());
|
| + pContentArray->AddNew<CPDF_Reference>(pDoc, pDirectObj->GetObjNum());
|
| + pPageDic->SetReferenceFor("Contents", pDoc, pContentArray);
|
| }
|
| }
|
|
|