diff options
author | Tom Sepez <tsepez@chromium.org> | 2017-05-19 17:08:52 -0700 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-05-20 00:31:33 +0000 |
commit | d15ce4c1e088e8bc084b52b0acdb5f0ef6597f95 (patch) | |
tree | 9de96e6b16569746b78a1aec044e10103779a9b4 /xfa/fxfa | |
parent | 910b7635d72b66a06ab22806ad09b650131b4dc2 (diff) | |
download | pdfium-d15ce4c1e088e8bc084b52b0acdb5f0ef6597f95.tar.xz |
Use observed ptrs from CFGAS_GEFont back to its font mgrs.chromium/3106
CFGAS_GEFonts are ref counted, and its a good thing since they
are managed by at least three different font managers:
CFGAS_FontMgr, CXFA_PDFFontMgr, and CXFA_FontMgr. None of these
have a clear claim to ownership of the CFGAS_GEFont.
CFGAS_GEFont has back-pointers to two of these, CFGAS_FontMgr, and
CXFA_PDFFontMgr, and they could each outlive the other. Thus the
font needs to watch for destruction of either of its managers, so
as to stop using it after its gone.
Bug: 724640
Change-Id: I907ec35e300e11e532e13545d51fb200ac86b4f9
Reviewed-on: https://pdfium-review.googlesource.com/5735
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'xfa/fxfa')
-rw-r--r-- | xfa/fxfa/cxfa_pdffontmgr.cpp | 1 | ||||
-rw-r--r-- | xfa/fxfa/cxfa_pdffontmgr.h | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/xfa/fxfa/cxfa_pdffontmgr.cpp b/xfa/fxfa/cxfa_pdffontmgr.cpp index 9e2cf68801..77c4433f98 100644 --- a/xfa/fxfa/cxfa_pdffontmgr.cpp +++ b/xfa/fxfa/cxfa_pdffontmgr.cpp @@ -9,6 +9,7 @@ #include <algorithm> #include "core/fpdfapi/font/cpdf_font.h" +#include "xfa/fgas/font/cfgas_gefont.h" #include "xfa/fxfa/cxfa_ffapp.h" namespace { diff --git a/xfa/fxfa/cxfa_pdffontmgr.h b/xfa/fxfa/cxfa_pdffontmgr.h index 1188ce1fba..d0a824067a 100644 --- a/xfa/fxfa/cxfa_pdffontmgr.h +++ b/xfa/fxfa/cxfa_pdffontmgr.h @@ -11,15 +11,16 @@ #include "core/fpdfapi/parser/cpdf_dictionary.h" #include "core/fpdfapi/parser/cpdf_document.h" +#include "core/fxcrt/cfx_observable.h" #include "core/fxcrt/cfx_retain_ptr.h" #include "core/fxcrt/fx_string.h" -#include "xfa/fgas/font/cfgas_gefont.h" #include "xfa/fxfa/cxfa_ffdoc.h" +class CFGAS_GEFont; class CPDF_Font; class CXFA_FFDoc; -class CXFA_PDFFontMgr { +class CXFA_PDFFontMgr : public CFX_Observable<CXFA_PDFFontMgr> { public: explicit CXFA_PDFFontMgr(CXFA_FFDoc* pDoc); ~CXFA_PDFFontMgr(); |