Chromium Code Reviews| Index: fpdfsdk/fpdfformfill.cpp |
| diff --git a/fpdfsdk/fpdfformfill.cpp b/fpdfsdk/fpdfformfill.cpp |
| index 7e4ce36f5f367889d7ec84087333f0c7d5a6de88..d53edfbc2038c6c7defb87816747f5528ac7b919 100644 |
| --- a/fpdfsdk/fpdfformfill.cpp |
| +++ b/fpdfsdk/fpdfformfill.cpp |
| @@ -243,13 +243,14 @@ FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT document, |
| return nullptr; |
| CPDFSDK_Environment* pEnv = new CPDFSDK_Environment(pDocument, formInfo); |
| + CPDFSDK_Document* pSDKDoc = new CPDFSDK_Document(pDocument, pEnv); |
|
Tom Sepez
2016/09/22 17:02:22
I like how this adds credibility to the theory tha
dsinclair
2016/09/22 17:32:12
Done.
|
| + pEnv->SetSDKDocument(pSDKDoc); |
| + |
| #ifdef PDF_ENABLE_XFA |
| - pEnv->SetSDKDocument(pDocument->GetSDKDocument(pEnv)); |
| - CPDFXFA_App* pApp = CPDFXFA_App::GetInstance(); |
| - pApp->AddFormFillEnv(pEnv); |
| -#else // PDF_ENABLE_XFA |
| - pEnv->SetSDKDocument(new CPDFSDK_Document(pDocument, pEnv)); |
| + pDocument->SetSDKDoc(WrapUnique(pSDKDoc)); |
| + CPDFXFA_App::GetInstance()->AddFormFillEnv(pEnv); |
| #endif // PDF_ENABLE_XFA |
| + |
| return pEnv; |
| } |
| @@ -257,16 +258,18 @@ DLLEXPORT void STDCALL |
| FPDFDOC_ExitFormFillEnvironment(FPDF_FORMHANDLE hHandle) { |
| if (!hHandle) |
| return; |
| + |
| CPDFSDK_Environment* pEnv = HandleToCPDFSDKEnvironment(hHandle); |
| + |
| #ifdef PDF_ENABLE_XFA |
| - CPDFXFA_App* pApp = CPDFXFA_App::GetInstance(); |
| - pApp->RemoveFormFillEnv(pEnv); |
| + CPDFXFA_App::GetInstance()->RemoveFormFillEnv(pEnv); |
| #else // PDF_ENABLE_XFA |
| if (CPDFSDK_Document* pSDKDoc = pEnv->GetSDKDocument()) { |
| pEnv->SetSDKDocument(nullptr); |
|
Tom Sepez
2016/09/22 17:02:22
Similarly, this is the only place where this gets
dsinclair
2016/09/22 17:32:12
That we can't do. The environment only owns the SD
|
| delete pSDKDoc; |
| } |
| #endif // PDF_ENABLE_XFA |
| + |
| delete pEnv; |
| } |