[Libreoffice-commits] core.git: Branch 'libreoffice-5-1' - filter/source

Maxim Monastirsky momonasmon at gmail.com
Wed Jan 6 00:43:34 PST 2016


 filter/source/odfflatxml/OdfFlatXml.cxx |    4 ++++
 1 file changed, 4 insertions(+)

New commits:
commit 22383b1002a63084be91d29ebff229cffdd6cf97
Author: Maxim Monastirsky <momonasmon at gmail.com>
Date:   Thu Dec 24 21:49:23 2015 +0200

    tdf#96713 OdfFlatXml: Seek to 0 before reading
    
    Similar to tdf#45418.
    
    The problem is that sfx2 DocumentInserter code calls SfxMedium::IsStorage,
    which reads the stream but doesn't correctly seek back to 0. Actually
    SfxMedium_Impl has 2 members for the input stream, one of SvStream type
    and another one as Reference<XInputStream>. Turns out that reading with
    SvStream::Read changes the position in the object referenced by
    Reference<XInputStream>, but SvStream::Seek doesn't, so Seek(0) doesn't
    do the desired effect.
    
    My current solution is to ensure that we're reading from 0 inside the
    filter. I think it's a good thing to do anyway, and should be sufficient,
    given that other filters doesn't seem to be affected by this bug.
    
    Change-Id: I49b41077032d3e395c675e4f7824cc778c075473
    (cherry picked from commit 5e4124396cafc2b0a435f17a66b33e36303ae4e4)
    Reviewed-on: https://gerrit.libreoffice.org/20969
    Reviewed-by: Adolfo Jayme Barrientos <fitojb at ubuntu.com>
    Tested-by: Adolfo Jayme Barrientos <fitojb at ubuntu.com>

diff --git a/filter/source/odfflatxml/OdfFlatXml.cxx b/filter/source/odfflatxml/OdfFlatXml.cxx
index 8022178..2d32977 100644
--- a/filter/source/odfflatxml/OdfFlatXml.cxx
+++ b/filter/source/odfflatxml/OdfFlatXml.cxx
@@ -147,6 +147,10 @@ OdfFlatXml::importer(
     saxParser->setDocumentHandler(docHandler);
     try
         {
+            css::uno::Reference< css::io::XSeekable > xSeekable( inputStream, css::uno::UNO_QUERY );
+            if ( xSeekable.is() )
+                xSeekable->seek( 0 );
+
             saxParser->parseStream(inputSource);
         }
     catch (const Exception &exc)


More information about the Libreoffice-commits mailing list