diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-01-23 10:17:37 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-01-23 10:19:18 +0000 |
commit | a4f97070bdb6172c684ec175c3e6e2a550eb9630 (patch) | |
tree | 6d3ead8fdcbaaefd92e45f1219d4910c80a9883a /writerfilter/source | |
parent | 91567c26f436ccce0fb60ad6a9671f046a4a68e7 (diff) |
avoid terminate on loading fdo73574-3.docx
by moving work done in dtor to an explicit method
Change-Id: I99b3843819ea78f2a91a2784ae0243430dacb3d9
Diffstat (limited to 'writerfilter/source')
-rw-r--r-- | writerfilter/source/ooxml/Handler.cxx | 8 | ||||
-rw-r--r-- | writerfilter/source/ooxml/Handler.hxx | 6 | ||||
-rw-r--r-- | writerfilter/source/ooxml/OOXMLFastContextHandler.cxx | 2 |
3 files changed, 10 insertions, 6 deletions
diff --git a/writerfilter/source/ooxml/Handler.cxx b/writerfilter/source/ooxml/Handler.cxx index 519f2975a50b..89d7cdbfb40a 100644 --- a/writerfilter/source/ooxml/Handler.cxx +++ b/writerfilter/source/ooxml/Handler.cxx @@ -165,11 +165,11 @@ void OOXMLEmbeddedFontHandler::sprm(Sprm & /*sprm*/) class OOXMLFooterHandler */ OOXMLFooterHandler::OOXMLFooterHandler(OOXMLFastContextHandler * pContext) -: mpFastContext(pContext), msStreamId(), mnType(0) + : mpFastContext(pContext), msStreamId(), mnType(0) { } -OOXMLFooterHandler::~OOXMLFooterHandler() +void OOXMLFooterHandler::finalize() { mpFastContext->resolveFooter(mnType, msStreamId); } @@ -197,11 +197,11 @@ void OOXMLFooterHandler::sprm(Sprm & /*sprm*/) class OOXMLHeaderHandler */ OOXMLHeaderHandler::OOXMLHeaderHandler(OOXMLFastContextHandler * pContext) -: mpFastContext(pContext), msStreamId(), mnType(0) + : mpFastContext(pContext), msStreamId(), mnType(0) { } -OOXMLHeaderHandler::~OOXMLHeaderHandler() +void OOXMLHeaderHandler::finalize() { mpFastContext->resolveHeader(mnType, msStreamId); } diff --git a/writerfilter/source/ooxml/Handler.hxx b/writerfilter/source/ooxml/Handler.hxx index 642de8c40a54..2b470a627b2e 100644 --- a/writerfilter/source/ooxml/Handler.hxx +++ b/writerfilter/source/ooxml/Handler.hxx @@ -55,7 +55,8 @@ class OOXMLFooterHandler : public Properties sal_Int32 mnType; public: OOXMLFooterHandler(OOXMLFastContextHandler * pContext); - virtual ~OOXMLFooterHandler(); + virtual ~OOXMLFooterHandler() {} + void finalize(); virtual void attribute(Id name, Value & val) SAL_OVERRIDE; virtual void sprm(Sprm & sprm) SAL_OVERRIDE; }; @@ -67,7 +68,8 @@ class OOXMLHeaderHandler : public Properties sal_Int32 mnType; public: OOXMLHeaderHandler(OOXMLFastContextHandler * pContext); - virtual ~OOXMLHeaderHandler(); + virtual ~OOXMLHeaderHandler() {} + void finalize(); virtual void attribute(Id name, Value & val) SAL_OVERRIDE; virtual void sprm(Sprm & sprm) SAL_OVERRIDE; }; diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx index 9a56d0b2ca2e..c87e9811b7fc 100644 --- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx +++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx @@ -1048,12 +1048,14 @@ void OOXMLFastContextHandlerProperties::handleHdrFtr() { OOXMLFooterHandler aFooterHandler(this); mpPropertySet->resolve(aFooterHandler); + aFooterHandler.finalize(); } break; case W_TOKEN(headerReference): { OOXMLHeaderHandler aHeaderHandler(this); mpPropertySet->resolve(aHeaderHandler); + aHeaderHandler.finalize(); } break; default: |