[Libreoffice-commits] core.git: Branch 'libreoffice-4-2-6' - sax/source

Michael Meeks michael.meeks at collabora.com
Tue Jul 15 04:01:29 PDT 2014


 sax/source/fastparser/fastparser.cxx |   11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

New commits:
commit 779c4cf10a9fd7e6d3c165d709531946cf68939d
Author: Michael Meeks <michael.meeks at collabora.com>
Date:   Fri Jul 11 20:49:33 2014 +0100

    fdo#81214 - tolerate exceptions thrown inside XFastParser callbacks.
    
    Not an ideal solution; ideally we should not throw the exceptions,
    and stop the parser as soon as something bad like this happens; but
    hopefully exception throwing is reasonable exceptional.
    
    Change-Id: If619592533b2929c671e2b03eb8a83480bd92c54
    Reviewed-on: https://gerrit.libreoffice.org/10289
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    Tested-by: Michael Stahl <mstahl at redhat.com>
    (cherry picked from commit b8d8ec78c3e242d94963beef5aff6335f047ef59)
    Reviewed-on: https://gerrit.libreoffice.org/10290
    Reviewed-by: David Tardon <dtardon at redhat.com>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sax/source/fastparser/fastparser.cxx b/sax/source/fastparser/fastparser.cxx
index e10ce3f..2ae9abf 100644
--- a/sax/source/fastparser/fastparser.cxx
+++ b/sax/source/fastparser/fastparser.cxx
@@ -627,12 +627,11 @@ void Entity::throwException( const ::rtl::Reference< FastLocatorImpl > &xDocumen
 // the consuming thread.
 void Entity::saveException( const Exception &e )
 {
-    // only store the first exception
-    if( !maSavedException.hasValue() )
-    {
-        maSavedException <<= e;
-        XML_StopParser( mpParser, /* resumable? */ XML_FALSE );
-    }
+    // fdo#81214 - allow the parser to run on after an exception,
+    // unexpectedly some 'startElements' produce an UNO_QUERY_THROW
+    // for XComponent; and yet expect to continue parsing.
+    SAL_WARN("sax", "Unexpected exception from XML parser " << e.Message);
+    maSavedException <<= e;
 }
 
 } // namespace


More information about the Libreoffice-commits mailing list