[Libreoffice-commits] core.git: sw/qa sw/source

Miklos Vajna vmiklos at collabora.co.uk
Tue Jan 24 09:12:45 UTC 2017


 sw/qa/extras/ww8export/data/tdf104334.doc |binary
 sw/qa/extras/ww8export/ww8export2.cxx     |    8 ++++++++
 sw/source/filter/ww8/ww8par5.cxx          |    8 ++++++++
 3 files changed, 16 insertions(+)

New commits:
commit 44cb1d16f265565d6f77184f7c0d828d3d278dbf
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Jan 24 09:09:41 2017 +0100

    tdf#104334 DOC import: don't map STYLREF with switches to SwChapterField
    
    Commit d635b351849b8b576c907abf22500d0fa89ab54f (tdf#99100 DOC import:
    handle subset of STYLEREF natively, 2016-04-06) started to import the
    STYLEREF field code as SwChapterField in case it had \[a-z] switches
    after the field argument.
    
    The bugdoc has a \s switch, which is not documented in ISO/IEC
    29500-1:2012 17.16.5.59 "STYLEREF", nor is really clear what it would
    do.
    
    The original use-case was for the " STYLEREF 1 \* MERGEFORMAT " syntax,
    so just keep using fieldmarks for the " STYLEREF <field argument> \[a-z]
    " case.
    
    Change-Id: Ibd094e72be4e179c779a79a75769b599d4d9bba8
    Reviewed-on: https://gerrit.libreoffice.org/33489
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/sw/qa/extras/ww8export/data/tdf104334.doc b/sw/qa/extras/ww8export/data/tdf104334.doc
new file mode 100644
index 0000000..877caff
Binary files /dev/null and b/sw/qa/extras/ww8export/data/tdf104334.doc differ
diff --git a/sw/qa/extras/ww8export/ww8export2.cxx b/sw/qa/extras/ww8export/ww8export2.cxx
index 6dc17cc..d5050cc 100644
--- a/sw/qa/extras/ww8export/ww8export2.cxx
+++ b/sw/qa/extras/ww8export/ww8export2.cxx
@@ -74,6 +74,14 @@ DECLARE_WW8EXPORT_TEST(testTdf104805, "tdf104805.doc")
     }
 }
 
+DECLARE_WW8EXPORT_TEST(testTdf104334, "tdf104334.doc")
+{
+    // This failed with a container::NoSuchElementException: STYLEREF was
+    // mapped to SwChapterField, and the field result was "This is a Heading 1"
+    // instead of just "1".
+    CPPUNIT_ASSERT_EQUAL(OUString("1"), getRun(getParagraph(2), 3)->getString());
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx
index cb14e24..5d96063 100644
--- a/sw/source/filter/ww8/ww8par5.cxx
+++ b/sw/source/filter/ww8/ww8par5.cxx
@@ -914,6 +914,14 @@ long SwWW8ImplReader::Read_Field(WW8PLCFManResult* pRes)
         if (nRet == -2 && !aReadParam.GetResult().isEmpty())
             // Single numeric argument: this can be handled by SwChapterField.
             bHasHandler = rtl::isAsciiDigit(aReadParam.GetResult()[0]);
+
+        if (bHasHandler)
+        {
+            nRet = aReadParam.SkipToNextToken();
+            // Handle using SwChapterField only in case there is no \[a-z]
+            // switch after the field argument.
+            bHasHandler = nRet < 0 || nRet == '*';
+        }
     }
 
     // keine Routine vorhanden


More information about the Libreoffice-commits mailing list