summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-01-23 10:17:37 +0000
committerCaolán McNamara <caolanm@redhat.com>2015-01-23 10:19:18 +0000
commita4f97070bdb6172c684ec175c3e6e2a550eb9630 (patch)
tree6d3ead8fdcbaaefd92e45f1219d4910c80a9883a /writerfilter
parent91567c26f436ccce0fb60ad6a9671f046a4a68e7 (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')
-rw-r--r--writerfilter/source/ooxml/Handler.cxx8
-rw-r--r--writerfilter/source/ooxml/Handler.hxx6
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.cxx2
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: