[Libreoffice-commits] core.git: writerfilter/source

tagezi lera.goncharuk at gmail.com
Thu Dec 7 07:28:21 UTC 2017


 writerfilter/source/ooxml/OOXMLDocumentImpl.cxx |   25 +++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

New commits:
commit 58e4b36ace484f2743a3b9919d830c175464b05d
Author: tagezi <lera.goncharuk at gmail.com>
Date:   Wed Dec 6 21:23:37 2017 +0200

    tdf#104650 Creating guard to reset status indicator
    
    Change-Id: Ic1e79badedc031a588c0b07958002ad7c558ba82
    Reviewed-on: https://gerrit.libreoffice.org/45987
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
index 2223b2a6c61c..c23aa86b464a 100644
--- a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
+++ b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
@@ -417,8 +417,30 @@ void OOXMLDocumentImpl::resolveFooter(Stream & rStream,
      }
 }
 
+namespace {
+// Ensures that the indicator is reset after exiting OOXMLDocumentImpl::resolve
+class StatusIndicatorGuard{
+public:
+    explicit StatusIndicatorGuard(css::uno::Reference<css::task::XStatusIndicator>& xStatusIndicator)
+        :mxStatusIndicator(xStatusIndicator)
+    {
+    }
+
+    ~StatusIndicatorGuard()
+    {
+        if (mxStatusIndicator.is())
+                mxStatusIndicator->end();
+    }
+
+private:
+    css::uno::Reference<css::task::XStatusIndicator> mxStatusIndicator;
+};
+}
+
 void OOXMLDocumentImpl::resolve(Stream & rStream)
 {
+    StatusIndicatorGuard aStatusIndicatorGuard(mxStatusIndicator);
+
     if (utl::MediaDescriptor(maMediaDescriptor).getUnpackedValueOrDefault("ReadGlossaries", false))
     {
         resolveFastSubStream(rStream, OOXMLStream::GLOSSARY);
@@ -515,9 +537,6 @@ void OOXMLDocumentImpl::resolve(Stream & rStream)
                 "OOXMLDocumentImpl::resolve(): non-UNO exception");
         }
     }
-
-    if (mxStatusIndicator.is())
-        mxStatusIndicator->end();
 }
 
 void OOXMLDocumentImpl::incrementProgress()


More information about the Libreoffice-commits mailing list