summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorJustin Luth <justin_luth@sil.org>2017-08-11 12:50:37 -0400
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-08-16 08:48:57 +0200
commitb6e0fcf85696b65aff160661a6f89d84a4e27962 (patch)
treebb54ac21af97346a717925722de25a298881641f /writerfilter
parent9dd82d0d68065ab95e20a1a489f4130299a8669e (diff)
DomainMapper_Impl: add check for m_xTextFactory.is() where missing.
To test: make CppunitTest_writerfilter_rtftok These crash triggering instances were hidden by the presense of \super in topcontext-2.rtf - so I copied it, and only removed \super. My fix for tdf#109382 triggered a unit test failure for one missing m_xTextFactory. It seemed safe enough to test for all of them that aren't in try/catch blocks, not just for the specific instance I can prove with the test. Change-Id: I1e317e05f9bcbbb14360941ce07af1bdf0edac6a Reviewed-on: https://gerrit.libreoffice.org/41060 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/qa/cppunittests/rtftok/data/fail/topcontext-3.rtf28
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx13
2 files changed, 39 insertions, 2 deletions
diff --git a/writerfilter/qa/cppunittests/rtftok/data/fail/topcontext-3.rtf b/writerfilter/qa/cppunittests/rtftok/data/fail/topcontext-3.rtf
new file mode 100644
index 000000000000..112162397f43
--- /dev/null
+++ b/writerfilter/qa/cppunittests/rtftok/data/fail/topcontext-3.rtf
@@ -0,0 +1,28 @@
+{\ul\001ll\fJ
+ {Ystylesheet;{;}}
+{bbbbbbbbbbbbbbbbb{O\00\80\00\tc\DD\00\FFDD\BED@DDD\F7bTr\00\00*i\\FF\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FB\FF\
+\\\BD\EB||){Tb\FD\00\00\00p\FFA\00\00\00r \00\00\00\BB
+\88\83AA4A\FC\E5C\E5\F5\E5\E5\FF\80\E5\E5\E5\D3O<BZ\
+\D\00
+\EA\00\00\00\FFbT\9B\85\00{rbNNNNNNNNNNNNNNNNN\E5\E5\E5\E5\E5\E5\E5\E5\E5IA\00\FFiH\\
+\T\\ \E7\00\ED(\\92\DEs\\F0 \82\AA\AA =\00V  n\E7\00\ect\00\00\00\B1\B1\B1w^w\AAuu\00\00
+\d\00\00\00\00\00\00\FFbTUUQVUߘ\98U\00DF\F6\F63#\99\00\00\98\AC\98\98\00\00 x\95es\E4\B7\D3\\00\80w\80\FF\00\AAd\FF\00*\00菋\8B\8BM`I\00 \00\80\v\U\i\F8\F8\AB\98\D8\\91\sect\\F0\F0\F0\F0\F0\F0\F0ec\F0\F0\F0 \8B\00\8B\8B\8BOOOMII\C2\C2\EC\FEw{O\00\80\00d<tR}\\iL@\A4u{\E8A\00剉\89\89\89\89\89\89\{O\86]UvII<OOOOOOOOOOMI:\C2\C2\00\00\00\00\EC\F1w{O\00\80\00d\t\B5}\\iL\\00\89k \FF\DF\DF\DF\DF\DD\DF\DF\DF\DF\00 \8EiE \E5\q\FA{P\00zri\A2\00\DD\00\AAe{\00\C0DDDD\8FDD\BED\00\E8\f\\i\\FF\E9\FF\9Bc\F1[\8\00\EB{\98
+\DFh\FF\\00\\\BD\E1||||Z|||||\A1\FD\98\98\98\98\98\98\8F\90\98\98\D8\tc}ww\00\tc}\\i\FE\\00/k շ\D3\\FF\FF}wX\EB\tc}\\iL\\9F\00/k \F6\FF\FE\FFE\FF\FF\FE\E8KK\00\00\00 \00\E6ii{ۜ\80\85
+\80\q\FA\00\00\FA\F8\E5 ގ|^
+\E5\E5\E5\E5C\E5\E5\E5\E5\FF\80\E5\E5\E5\D3\E5
+BZ\
+\t\00
+\E5\FF\FFi\00
+\ \FA>\006\FA\00\00\EB\F8\E5 \00\00\\98\00xtesշ\D3^t000c\00\00\00\00ppu\00\00\00\00\00\E5\D1\E5\80\00\00\00\FA\F8\E5'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb{O\00\80\00\tc\A5\\iL\\00\E5\F2\E5\E5\E5\80\E8\E5\E5\E5\FF\FFbTUEQU\00\00\00\00\80\00\00\AD\E5\E5\E5\E5C\00\00\00\E5\E5\E5\E5\E5\E5I \00\{P\FFig\\
+{O\00\80\00d<tR\T\ect\00\00\ .AK\EF
+\F\80\FF
+\\\E5\FF\FF\i"\00\FFw\F4\F2\D9\00\89\89\89s\89\89k\89\8AigQ\hhhhhhhA\\00Ad\00\FFiI \00iI d\00\00\009\FFH\E2\F8\006\FA\00\00 \00NNNNNNNNNNNNNNNNNNNNN\00\B6\FA\E5[\
+\Z\
+6\006\D3\00\80\E5\FF\ig\FB~\9Fo
+^
+\E5\E5\E4\E5C\E5\E5\E5\E5\E5\E5\E5\E5\E5\E5IA\00\FFiH\\
+\T\\ EAd\00\FF\iI \00\E8\00\\\
+\R\xKKKKKKKKKKKKKKKKKKKKKKKKK\FF\\\F8\FF\FA\00\82\00\00\00rd\00\00ppp\FF\i\\FF\FF\A0\00\00\00%C
+\FF\FF\00}g ~\80\00\80xxxxxxxxxxig\\
+\\%\E5\E5\E5\E5\E5\E5\E5\C6\E5\E5tes\E4\B7\D3\\00\80}\E5\E5,TgU\\00~
+\\006\00
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 589dbf1b6770..2cd7f7fff6c2 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -2761,7 +2761,7 @@ uno::Reference<beans::XPropertySet> DomainMapper_Impl::FindOrCreateFieldMaster(c
//get the master
xMaster.set(xFieldMasterAccess->getByName(sFieldMasterName), uno::UNO_QUERY_THROW);
}
- else
+ else if( m_xTextFactory.is() )
{
//create the master
xMaster.set( m_xTextFactory->createInstance(sFieldMasterService), uno::UNO_QUERY_THROW);
@@ -4145,7 +4145,7 @@ void DomainMapper_Impl::CloseFieldCommand()
xFieldProperties->setPropertyValue(
getPropertyName( PROP_REFERENCE_FIELD_PART ), uno::makeAny( nFieldPart ));
}
- else
+ else if( m_xTextFactory.is() )
{
xFieldInterface = m_xTextFactory->createInstance("com.sun.star.text.TextField.GetExpression");
xFieldProperties.set(xFieldInterface, uno::UNO_QUERY);
@@ -4306,6 +4306,9 @@ void DomainMapper_Impl::CloseFieldCommand()
break;
case FIELD_XE:
{
+ if( !m_xTextFactory.is() )
+ break;
+
uno::Reference< beans::XPropertySet > xTC(
m_xTextFactory->createInstance(
OUString::createFromAscii(aIt->second.cFieldServiceName)),
@@ -4332,6 +4335,9 @@ void DomainMapper_Impl::CloseFieldCommand()
break;
case FIELD_CITATION:
{
+ if( !m_xTextFactory.is() )
+ break;
+
xFieldInterface = m_xTextFactory->createInstance(
OUString::createFromAscii(aIt->second.cFieldServiceName));
uno::Reference< beans::XPropertySet > xTC(xFieldInterface,
@@ -4353,6 +4359,9 @@ void DomainMapper_Impl::CloseFieldCommand()
case FIELD_TC :
{
+ if( !m_xTextFactory.is() )
+ break;
+
uno::Reference< beans::XPropertySet > xTC(
m_xTextFactory->createInstance(
OUString::createFromAscii(aIt->second.cFieldServiceName)),