Makefile.fetch                                             |    1 
 RepositoryExternal.mk                                      |   33 
 basctl/source/basicide/macrodlg.cxx                        |    3 
 bin/oss-fuzz-setup.sh                                      |    1 
 config_host.mk.in                                          |    2 
 configure.ac                                               |   26 
 connectivity/source/cpool/ZConnectionPool.cxx              |    2 
 connectivity/source/drivers/evoab2/EApi.cxx                |    1 
 cui/source/tabpages/measure.cxx                            |    5 
 distro-configs/LibreOfficeCoverity.conf                    |    1 
 distro-configs/LibreOfficeFlatpak.conf                     |    1 
 download.lst                                               |    2 
 external/Module_external.mk                                |    1 
 external/cuckoo/Makefile                                   |    7 
 external/cuckoo/Module_cuckoo.mk                           |   16 
 external/cuckoo/README                                     |    3 
 external/cuckoo/UnpackedTarball_cuckoo.mk                  |   22 
 external/cuckoo/cuckoo-coverity.patch                      |   22 
 readlicense_oo/license/CREDITS.fodt                        | 4514 ++++++-------
 readlicense_oo/license/license.xml                         |    6 
 sal/osl/w32/tempfile.cxx                                   |    2 
 sc/inc/columnspanset.hxx                                   |    3 
 sc/source/core/data/columnspanset.cxx                      |    6 
 sc/source/core/data/drwlayer.cxx                           |    3 
 sc/source/ui/view/gridwin.cxx                              |   18 
 sd/source/ui/func/fuzoom.cxx                               |   12 
 sfx2/source/appl/newhelp.cxx                               |    6 
 sfx2/source/view/viewfrm.cxx                               |   44 
 solenv/flatpak-manifest.in                                 |    7 
 starmath/inc/view.hxx                                      |    6 
 starmath/source/view.cxx                                   |    8 
 svgio/inc/svgstyleattributes.hxx                           |    3 
 svgio/qa/cppunit/SvgImportTest.cxx                         |   24 
 svgio/qa/cppunit/data/ClipRule.svg                         |   18 
 svgio/source/svgreader/svgstyleattributes.cxx              |   44 
 svl/Library_svl.mk                                         |    1 
 svl/source/misc/sharedstringpool.cxx                       |  161 
 svx/source/form/formcontroller.cxx                         |    2 
 svx/source/unodraw/SvxXTextColumns.cxx                     |    4 
 sw/qa/extras/odfexport/data/section-columns-separator.fodt |   24 
 sw/qa/extras/odfexport/odfexport.cxx                       |    6 
 sw/qa/extras/odfexport/odfexport2.cxx                      |   35 
 sw/qa/extras/ooxmlexport/ooxmlexport13.cxx                 |    4 
 sw/source/core/doc/DocumentRedlineManager.cxx              |    7 
 sw/source/core/doc/doclay.cxx                              |   11 
 sw/source/core/doc/textboxhelper.cxx                       |    3 
 sw/source/core/layout/atrfrm.cxx                           |    4 
 sw/source/core/text/porlay.cxx                             |    4 
 sw/source/core/text/redlnitr.cxx                           |    2 
 sw/source/core/txtnode/modeltoviewhelper.cxx               |   12 
 sw/source/core/unocore/unotext.cxx                         |   21 
 sw/source/filter/xml/xmlexp.hxx                            |    4 
 sw/source/filter/xml/xmlfmte.cxx                           |   12 
 sw/source/filter/xml/xmliteme.cxx                          |    2 
 sw/source/filter/xml/xmltble.cxx                           |  157 
 sw/source/filter/xml/xmltexte.hxx                          |   12 
 sw/source/uibase/app/docstyle.cxx                          |   18 
 ucb/source/ucp/webdav-curl/CurlSession.cxx                 |   11 
 vcl/skia/skia_denylist_vulkan.xml                          |    5 
 vcl/unx/gtk3/gtkinst.cxx                                   |   28 
 wizards/source/scriptforge/SF_PythonHelper.xba             |   12 
 wizards/source/scriptforge/python/scriptforge.py           |    9 
 writerfilter/source/dmapper/DomainMapper_Impl.cxx          |   49 
 writerfilter/source/dmapper/GraphicImport.cxx              |   11 
 xmloff/qa/unit/data/tdf150407_PosRelBottomMargin.docx      |binary
 xmloff/qa/unit/data/tdf150407_PosRelTopMargin.docx         |binary
 xmloff/qa/unit/data/tdf150407_WritingModeBTLR_style.odt    |binary
 xmloff/qa/unit/style.cxx                                   |  191 
 xmloff/source/style/xmlexppr.cxx                           |   51 
 xmloff/source/text/XMLTextColumnsExport.cxx                |   13 
 70 files changed, 3050 insertions(+), 2709 deletions(-)

New commits:
commit dc94c82f67369219b69a0daa34c055eea28dfb5c
Author:     Mike Kaganski <[email protected]>
AuthorDate: Wed Aug 24 10:49:47 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:19 2022 +0200

    tdf#150577: Revert "Micro-optim in FormController::approveRowChange"
    
    This reverts commit e005ab5d40d358adb75a64e140d46f4bf605647d.
    
    XColumn::wasNull is documented [1] to require a previous call to a get*
    method. The reverted change internally queried the *previous* column's
    wasNull.
    
    [1] 
https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1sdb_1_1XColumn.html#a0d482c20564f9119052b1962f830190e
    
    Change-Id: I3e988358764fa6935e8eb3e66340a0869c157d02
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138550
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <[email protected]>
    (cherry picked from commit 59f30175bfc557aa7c752ab0b45af9d34215d4dc)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138822
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/svx/source/form/formcontroller.cxx 
b/svx/source/form/formcontroller.cxx
index 50e0d4f592d9..d5687a15ba03 100644
--- a/svx/source/form/formcontroller.cxx
+++ b/svx/source/form/formcontroller.cxx
@@ -3647,7 +3647,7 @@ sal_Bool SAL_CALL FormController::approveRowChange(const 
RowChangeEvent& _rEvent
             }
 
             // TODO: in case of binary fields, this "getString" below is 
extremely expensive
-            if ( !rColInfo.xColumn->wasNull() || 
!rColInfo.xColumn->getString().isEmpty() )
+            if ( !rColInfo.xColumn->getString().isEmpty() || 
!rColInfo.xColumn->wasNull() )
                 continue;
 
             OUString sMessage( SvxResId( RID_ERR_FIELDREQUIRED ) );
commit dd816077a3dc8fa29590ed7b926012a96f25b6bf
Author:     Regina Henschel <[email protected]>
AuthorDate: Sat Aug 20 20:56:11 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:18 2022 +0200

    tdf#150407 do not use loext in save in ODF strict
    
    The 'bt-lr' attribute value of 'writing-mode' attribute and the
    'page-content-bottom' and 'page-content-top' values of 'vertical-rel'
    attribute are not part of ODF 1.3. Therefore they need to be saved in
    'loext' extended namespace.
    
    Error was, that this was done too, if the current ODF version is
    strict. That results in an invalid file in a productive build and a
    failed assert in SvXMLNamespaceMap::GetQNameByKey() in a debug build.
    
    Change-Id: Ie9ba99fdd02de21a2467b236409daa951933f011
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138595
    Tested-by: Jenkins
    Reviewed-by: Regina Henschel <[email protected]>
    (cherry picked from commit 64be7052ba7e02e248412222098e07a5f4106456)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138541
    Reviewed-by: Michael Stahl <[email protected]>
    (cherry picked from commit 34edaf8249107c4216fdaffe450d287a1908a0de)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138547

diff --git a/xmloff/qa/unit/data/tdf150407_PosRelBottomMargin.docx 
b/xmloff/qa/unit/data/tdf150407_PosRelBottomMargin.docx
new file mode 100644
index 000000000000..0264f89f98a6
Binary files /dev/null and 
b/xmloff/qa/unit/data/tdf150407_PosRelBottomMargin.docx differ
diff --git a/xmloff/qa/unit/data/tdf150407_PosRelTopMargin.docx 
b/xmloff/qa/unit/data/tdf150407_PosRelTopMargin.docx
new file mode 100644
index 000000000000..48f981506243
Binary files /dev/null and b/xmloff/qa/unit/data/tdf150407_PosRelTopMargin.docx 
differ
diff --git a/xmloff/qa/unit/data/tdf150407_WritingModeBTLR_style.odt 
b/xmloff/qa/unit/data/tdf150407_WritingModeBTLR_style.odt
new file mode 100644
index 000000000000..2ad2ca1219b2
Binary files /dev/null and 
b/xmloff/qa/unit/data/tdf150407_WritingModeBTLR_style.odt differ
diff --git a/xmloff/qa/unit/style.cxx b/xmloff/qa/unit/style.cxx
index 1f63cbe1355a..93634ad5170d 100644
--- a/xmloff/qa/unit/style.cxx
+++ b/xmloff/qa/unit/style.cxx
@@ -23,6 +23,9 @@
 #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
 
 #include <comphelper/propertysequence.hxx>
+#include <officecfg/Office/Common.hxx>
+#include <unotools/mediadescriptor.hxx>
+#include <unotools/saveopt.hxx>
 #include <unotools/tempfile.hxx>
 #include <unotools/ucbstreamhelper.hxx>
 #include <rtl/character.hxx>
@@ -45,6 +48,7 @@ public:
     void registerNamespaces(xmlXPathContextPtr& pXmlXpathCtx) override;
     uno::Reference<lang::XComponent>& getComponent() { return mxComponent; }
     void load(std::u16string_view rURL);
+    void save(const OUString& rFilterName, utl::TempFile& rTempFile);
 };
 
 void XmloffStyleTest::setUp()
@@ -73,6 +77,16 @@ void XmloffStyleTest::load(std::u16string_view rFileName)
     mxComponent = loadFromDesktop(aURL);
 }
 
+void XmloffStyleTest::save(const OUString& rFilterName, utl::TempFile& 
rTempFile)
+{
+    uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY);
+    utl::MediaDescriptor aMediaDescriptor;
+    aMediaDescriptor["FilterName"] <<= rFilterName;
+    rTempFile.EnableKillingFile();
+    xStorable->storeToURL(rTempFile.GetURL(), 
aMediaDescriptor.getAsConstPropertyValueList());
+    validate(rTempFile.GetFileName(), test::ODF);
+}
+
 CPPUNIT_TEST_FIXTURE(XmloffStyleTest, testFillImageBase64)
 {
     // Load a flat ODG that has base64-encoded bitmap as a fill style.
@@ -197,6 +211,183 @@ CPPUNIT_TEST_FIXTURE(XmloffStyleTest, testRtlGutter)
     CPPUNIT_ASSERT(bRtlGutter);
 }
 
+CPPUNIT_TEST_FIXTURE(XmloffStyleTest, testWritingModeBTLR)
+{
+    // Load document. It has a frame style with writing-mode bt-lr.
+    // In ODF 1.3 extended it is written as loext:writing-mode="bt-lr".
+    // In ODF 1.3 strict, there must not be an attribute at all.
+    getComponent() = 
loadFromDesktop(m_directories.getURLFromSrc(DATA_DIRECTORY)
+                                         + 
"tdf150407_WritingModeBTLR_style.odt",
+                                     "com.sun.star.text.TextDocument");
+
+    Resetter _([]() {
+        std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+            comphelper::ConfigurationChanges::create());
+        officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch);
+        return pBatch->commit();
+    });
+
+    // Save to ODF 1.3 extended. Adapt 3 (=ODFVER_LATEST) to a to be 
ODFVER_013_EXTENDED when
+    // attribute value "bt-lr" is included in ODF strict.
+    {
+        std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+            comphelper::ConfigurationChanges::create());
+        officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch);
+        pBatch->commit();
+        utl::TempFile aTempFile;
+        save("writer8", aTempFile);
+
+        // With applied fix for tdf150407 still loext:writing-mode="bt-lr" has 
to be written.
+        std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, 
"styles.xml");
+        xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get());
+        assertXPath(pXmlDoc,
+                    
"/office:document-styles/office:styles/style:style[@style:name='FrameBTLR']/"
+                    "style:graphic-properties[@loext:writing-mode]");
+        assertXPath(pXmlDoc,
+                    
"/office:document-styles/office:styles/style:style[@style:name='FrameBTLR']/"
+                    "style:graphic-properties",
+                    "writing-mode", "bt-lr");
+    }
+    // Save to ODF 1.3 strict.
+    {
+        std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+            comphelper::ConfigurationChanges::create());
+        officecfg::Office::Common::Save::ODF::DefaultVersion::set(10, pBatch);
+        pBatch->commit();
+        utl::TempFile aTempFile;
+        save("writer8", aTempFile);
+
+        // Without the fix an faulty 'writing-mode="bt-lr"' attribute was 
written in productive build.
+        // A debug build fails assertion in SvXMLNamespaceMap::GetQNameByKey().
+        std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, 
"styles.xml");
+        xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get());
+        assertXPathNoAttribute(pXmlDoc,
+                               "/office:document-styles/office:styles/"
+                               
"style:style[@style:name='FrameBTLR']/style:graphic-properties",
+                               "writing-mode");
+    }
+}
+
+CPPUNIT_TEST_FIXTURE(XmloffStyleTest, testPosRelBottomMargin)
+{
+    // Load document. It has a frame position with vertical position relative 
to bottom margin.
+    // In ODF 1.3 extended it is written as 
loext:vertical-rel="page-content-bottom".
+    // In ODF 1.3 strict, there must not be an attribute at all.
+    getComponent() = 
loadFromDesktop(m_directories.getURLFromSrc(DATA_DIRECTORY)
+                                         + "tdf150407_PosRelBottomMargin.docx",
+                                     "com.sun.star.text.TextDocument");
+
+    Resetter _([]() {
+        std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+            comphelper::ConfigurationChanges::create());
+        officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch);
+        return pBatch->commit();
+    });
+
+    // Save to ODF 1.3 extended. Adapt 3 (=ODFVER_LATEST) to a to be 
ODFVER_013_EXTENDED when
+    // attribute value "page-content-bottom" is included in ODF strict.
+    {
+        std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+            comphelper::ConfigurationChanges::create());
+        officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch);
+        pBatch->commit();
+        utl::TempFile aTempFile;
+        save("writer8", aTempFile);
+
+        // With applied fix for tdf150407 still 
loext:vertical-rel="page-content-bottom" has to be
+        // written.
+        std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, 
"content.xml");
+        xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get());
+        assertXPath(
+            pXmlDoc,
+            
"/office:document-content/office:automatic-styles/style:style[@style:name='gr1']/"
+            "style:graphic-properties[@loext:vertical-rel]");
+        assertXPath(
+            pXmlDoc,
+            
"/office:document-content/office:automatic-styles/style:style[@style:name='gr1']/"
+            "style:graphic-properties",
+            "vertical-rel", "page-content-bottom");
+    }
+    // Save to ODF 1.3 strict.
+    {
+        std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+            comphelper::ConfigurationChanges::create());
+        officecfg::Office::Common::Save::ODF::DefaultVersion::set(10, pBatch);
+        pBatch->commit();
+        utl::TempFile aTempFile;
+        save("writer8", aTempFile);
+
+        // Without the fix an faulty 'vertical-rel="page-content-bottom"' 
attribute was written in
+        // productive build. A debug build fails assertion in 
SvXMLNamespaceMap::GetQNameByKey().
+        std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, 
"content.xml");
+        xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get());
+        assertXPathNoAttribute(pXmlDoc,
+                               
"/office:document-content/office:automatic-styles/"
+                               
"style:style[@style:name='gr1']/style:graphic-properties",
+                               "vertical-rel");
+    }
+}
+
+CPPUNIT_TEST_FIXTURE(XmloffStyleTest, testPosRelTopMargin)
+{
+    // Load document. It has a frame position with vertical position relative 
to top margin.
+    // In ODF 1.3 extended it is written as 
loext:vertical-rel="page-content-top".
+    // In ODF 1.3 strict, there must not be an attribute at all.
+    getComponent() = 
loadFromDesktop(m_directories.getURLFromSrc(DATA_DIRECTORY)
+                                         + "tdf150407_PosRelTopMargin.docx",
+                                     "com.sun.star.text.TextDocument");
+
+    Resetter _([]() {
+        std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+            comphelper::ConfigurationChanges::create());
+        officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch);
+        return pBatch->commit();
+    });
+
+    // Save to ODF 1.3 extended. Adapt 3 (=ODFVER_LATEST) to a to be 
ODFVER_013_EXTENDED when
+    // attribute value "page-content-top" is included in ODF strict.
+    {
+        std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+            comphelper::ConfigurationChanges::create());
+        officecfg::Office::Common::Save::ODF::DefaultVersion::set(3, pBatch);
+        pBatch->commit();
+        utl::TempFile aTempFile;
+        save("writer8", aTempFile);
+
+        // With applied fix for tdf150407 still 
loext:vertical-rel="page-content-top has to be
+        // written.
+        std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, 
"content.xml");
+        xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get());
+        assertXPath(
+            pXmlDoc,
+            
"/office:document-content/office:automatic-styles/style:style[@style:name='gr1']/"
+            "style:graphic-properties[@loext:vertical-rel]");
+        assertXPath(
+            pXmlDoc,
+            
"/office:document-content/office:automatic-styles/style:style[@style:name='gr1']/"
+            "style:graphic-properties",
+            "vertical-rel", "page-content-top");
+    }
+    // Save to ODF 1.3 strict.
+    {
+        std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+            comphelper::ConfigurationChanges::create());
+        officecfg::Office::Common::Save::ODF::DefaultVersion::set(10, pBatch);
+        pBatch->commit();
+        utl::TempFile aTempFile;
+        save("writer8", aTempFile);
+
+        // Without the fix an faulty 'vertical-rel="page-content-top"' 
attribute was written in
+        // productive build. A debug build fails assertion in 
SvXMLNamespaceMap::GetQNameByKey().
+        std::unique_ptr<SvStream> pStream = parseExportStream(aTempFile, 
"content.xml");
+        xmlDocUniquePtr pXmlDoc = parseXmlStream(pStream.get());
+        assertXPathNoAttribute(pXmlDoc,
+                               
"/office:document-content/office:automatic-styles/"
+                               
"style:style[@style:name='gr1']/style:graphic-properties",
+                               "vertical-rel");
+    }
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/style/xmlexppr.cxx b/xmloff/source/style/xmlexppr.cxx
index f87f9ae1ece0..d81253238d3a 100644
--- a/xmloff/source/style/xmlexppr.cxx
+++ b/xmloff/source/style/xmlexppr.cxx
@@ -929,6 +929,24 @@ void SvXMLExportPropertyMapper::_exportXML(
     }
 }
 
+namespace
+{
+// -1 = Attribute needs extended namespace, but current ODF version is strict.
+// 1 = Attribute needs extended namespace and current ODF version allows it.
+// 0 = Attribute does not need extended namespace
+sal_Int8 CheckExtendedNamespace(std::u16string_view sXMLAttributeName, 
std::u16string_view sValue,
+                                const SvtSaveOptions::ODFSaneDefaultVersion 
nODFVersion)
+{
+    if (IsXMLToken(sXMLAttributeName, XML_WRITING_MODE) && IsXMLToken(sValue, 
XML_BT_LR))
+        return nODFVersion & SvtSaveOptions::ODFSVER_EXTENDED ? 1 : -1;
+    else if (IsXMLToken(sXMLAttributeName, XML_VERTICAL_REL)
+             && (IsXMLToken(sValue, XML_PAGE_CONTENT_BOTTOM)
+                 || IsXMLToken(sValue, XML_PAGE_CONTENT_TOP)))
+        return nODFVersion & SvtSaveOptions::ODFSVER_EXTENDED ? 1 : -1;
+    return 0;
+}
+}
+
 void SvXMLExportPropertyMapper::_exportXML(
         SvXMLAttributeList& rAttrList,
         const XMLPropertyState& rProperty,
@@ -1057,31 +1075,14 @@ void SvXMLExportPropertyMapper::_exportXML(
 
             // We don't seem to have a generic mechanism to write an attribute 
in the extension
             // namespace in case of certain attribute values only, so do this 
manually.
-            if 
(IsXMLToken(mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex), 
XML_WRITING_MODE))
-            {
-                if (IsXMLToken(aValue, XML_BT_LR))
-                {
-                    sName = rNamespaceMap.GetQNameByKey(
-                            XML_NAMESPACE_LO_EXT,
-                            
mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex));
-                }
-            }
-            else if 
(IsXMLToken(mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex), 
XML_VERTICAL_REL))
-            {
-                if (IsXMLToken(aValue, XML_PAGE_CONTENT_BOTTOM))
-                {
-                    sName = rNamespaceMap.GetQNameByKey(
-                            XML_NAMESPACE_LO_EXT,
-                            
mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex));
-                }
-                if (IsXMLToken(aValue, XML_PAGE_CONTENT_TOP))
-                {
-                    sName = rNamespaceMap.GetQNameByKey(
-                            XML_NAMESPACE_LO_EXT,
-                            
mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex));
-                }
-            }
-
+            sal_Int8 nExtendedStatus
+                = 
CheckExtendedNamespace(mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex),
+                                         aValue, 
rUnitConverter.getSaneDefaultVersion());
+            if (nExtendedStatus == -1)
+                return;
+            if (nExtendedStatus == 1)
+                sName = rNamespaceMap.GetQNameByKey(
+                    XML_NAMESPACE_LO_EXT, 
mpImpl->mxPropMapper->GetEntryXMLName(rProperty.mnIndex));
             rAttrList.AddAttribute( sName, aValue );
         }
     }
commit 0cd9fe00e256d6ee76bcdf98630339c4e54da039
Author:     Xisco Fauli <[email protected]>
AuthorDate: Thu Jul 28 18:37:32 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:18 2022 +0200

    svgio: Add support for clip-rule="evenodd"
    
    Change-Id: I028aa88bdd72b4f87526a3d1edabd612d7686571
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137577
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137586
    (cherry picked from commit 2b22203c0be09e9685cf081f0a1fafa538a21294)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137973
    Reviewed-by: Christian Lohmaier <[email protected]>

diff --git a/svgio/inc/svgstyleattributes.hxx b/svgio/inc/svgstyleattributes.hxx
index 8db2fa0676f6..dd5c16daab43 100644
--- a/svgio/inc/svgstyleattributes.hxx
+++ b/svgio/inc/svgstyleattributes.hxx
@@ -338,6 +338,9 @@ namespace svgio::svgreader
             /// fill rule content
             FillRule getFillRule() const;
 
+            /// clip rule content
+            FillRule getClipRule() const;
+
             /// fill StrokeDasharray content
             const SvgNumberVector& getStrokeDasharray() const;
 
diff --git a/svgio/qa/cppunit/SvgImportTest.cxx 
b/svgio/qa/cppunit/SvgImportTest.cxx
index f9fc88f812de..cc4aae90bd39 100644
--- a/svgio/qa/cppunit/SvgImportTest.cxx
+++ b/svgio/qa/cppunit/SvgImportTest.cxx
@@ -62,6 +62,7 @@ class Test : public test::BootstrapFixture, public 
XmlTestTools
     void testClipPathAndParentStyle();
     void testClipPathAndStyle();
     void testClipPathUsingClipPath();
+    void testClipRule();
     void testi125329();
     void testMaskingPath07b();
     void test123926();
@@ -103,6 +104,7 @@ public:
     CPPUNIT_TEST(testClipPathAndParentStyle);
     CPPUNIT_TEST(testClipPathAndStyle);
     CPPUNIT_TEST(testClipPathUsingClipPath);
+    CPPUNIT_TEST(testClipRule);
     CPPUNIT_TEST(testi125329);
     CPPUNIT_TEST(testMaskingPath07b);
     CPPUNIT_TEST(test123926);
@@ -624,6 +626,28 @@ void Test::testClipPathUsingClipPath()
     assertXPath(pDocument, 
"/primitive2D/transform/mask/mask/polypolygon/polygon/point", 13);
 }
 
+void Test::testClipRule()
+{
+    Primitive2DSequence aSequence = 
parseSvg(u"/svgio/qa/cppunit/data/ClipRule.svg");
+    CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(aSequence.getLength()));
+
+    drawinglayer::Primitive2dXmlDump dumper;
+    xmlDocUniquePtr pDocument = 
dumper.dumpAndParse(comphelper::sequenceToContainer<Primitive2DContainer>(aSequence));
+
+    CPPUNIT_ASSERT (pDocument);
+
+    // Without the place in place, this test would have failed with
+    // - Expected: 5
+    // - Actual  : 10
+    assertXPath(pDocument, 
"/primitive2D/transform/mask[1]/polypolygon/polygon/point", 5);
+    assertXPath(pDocument, "/primitive2D/transform/mask[1]/polypolygoncolor", 
"color", "#0000ff");
+    assertXPath(pDocument, 
"/primitive2D/transform/mask[1]/polypolygoncolor/polypolygon/polygon/point", 5);
+
+    assertXPath(pDocument, 
"/primitive2D/transform/mask[2]/polypolygon/polygon/point", 5);
+    assertXPath(pDocument, "/primitive2D/transform/mask[2]/polypolygoncolor", 
"color", "#ff0000");
+    assertXPath(pDocument, 
"/primitive2D/transform/mask[2]/polypolygoncolor/polypolygon/polygon/point", 5);
+}
+
 void Test::testi125329()
 {
     //Check style inherit from * css element
diff --git a/svgio/qa/cppunit/data/ClipRule.svg 
b/svgio/qa/cppunit/data/ClipRule.svg
new file mode 100644
index 000000000000..55f0cb9eee3a
--- /dev/null
+++ b/svgio/qa/cppunit/data/ClipRule.svg
@@ -0,0 +1,18 @@
+<svg version="1.1" baseProfile="basic" id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink";>
+  <!-- Define star path -->
+  <defs>
+    <path d="M50,0 21,90 98,35 2,35 79,90z" id="star" />
+  </defs>
+  <clipPath id="emptyStar">
+    <use xlink:href="#star" clip-rule="evenodd" />
+  </clipPath>
+  <rect clip-path="url(#emptyStar)" width="50" height="90" fill="blue" />
+
+  <clipPath id="filledStar">
+    <use xlink:href="#star" clip-rule="evenodd" />
+  </clipPath>
+  <rect clip-path="url(#filledStar)" width="50" height="90" x="50" fill="red" 
/>
+</svg>
+
diff --git a/svgio/source/svgreader/svgstyleattributes.cxx 
b/svgio/source/svgreader/svgstyleattributes.cxx
index 8084ed5f0239..333ff7dbd317 100644
--- a/svgio/source/svgreader/svgstyleattributes.cxx
+++ b/svgio/source/svgreader/svgstyleattributes.cxx
@@ -1117,17 +1117,18 @@ namespace svgio::svgreader
             {
                 // create fill
                 basegfx::B2DPolyPolygon aPath(rPath);
-                const bool bNeedToCheckClipRule(SVGToken::Path == 
mrOwner.getType() || SVGToken::Polygon == mrOwner.getType());
-                const bool bClipPathIsNonzero(bNeedToCheckClipRule && 
mbIsClipPathContent && FillRule::nonzero == maClipRule);
-                const bool bFillRuleIsNonzero(bNeedToCheckClipRule && 
!mbIsClipPathContent && FillRule::nonzero == getFillRule());
 
-                if(bClipPathIsNonzero || bFillRuleIsNonzero)
+                if(SVGToken::Path == mrOwner.getType() || SVGToken::Polygon == 
mrOwner.getType())
                 {
-                    if(getFill() || getSvgGradientNodeFill() || 
getSvgPatternNodeFill()) {
-                        // nonzero is wanted, solve geometrically (see 
description on basegfx)
-                        // basegfx::utils::createNonzeroConform() is expensive 
for huge paths
-                        // and is only needed if path will be filled later on
-                        aPath = basegfx::utils::createNonzeroConform(aPath);
+                    if(FillRule::evenodd != getClipRule() && FillRule::evenodd 
!= getFillRule())
+                    {
+                        if(getFill() || getSvgGradientNodeFill() || 
getSvgPatternNodeFill())
+                        {
+                            // nonzero is wanted, solve geometrically (see 
description on basegfx)
+                            // basegfx::utils::createNonzeroConform() is 
expensive for huge paths
+                            // and is only needed if path will be filled later 
on
+                            aPath = 
basegfx::utils::createNonzeroConform(aPath);
+                        }
                     }
                 }
 
@@ -1267,10 +1268,10 @@ namespace svgio::svgreader
             mpMarkerMidXLink(nullptr),
             mpMarkerEndXLink(nullptr),
             maFillRule(FillRule::notset),
-            maClipRule(FillRule::nonzero),
+            maClipRule(FillRule::notset),
             maBaselineShift(BaselineShift::Baseline),
             maBaselineShiftNumber(0),
-            maResolvingParent(31, 0),
+            maResolvingParent(32, 0),
             mbIsClipPathContent(SVGToken::ClipPathNode == mrOwner.getType()),
             mbStrokeDasharraySet(false)
         {
@@ -2341,6 +2342,27 @@ namespace svgio::svgreader
             return FillRule::nonzero;
         }
 
+        FillRule SvgStyleAttributes::getClipRule() const
+        {
+            if(FillRule::notset != maClipRule)
+            {
+                return maClipRule;
+            }
+
+            const SvgStyleAttributes* pSvgStyleAttributes = getParentStyle();
+
+            if (pSvgStyleAttributes && maResolvingParent[31] < 
nStyleDepthLimit)
+            {
+                ++maResolvingParent[31];
+                auto ret = pSvgStyleAttributes->getClipRule();
+                --maResolvingParent[31];
+                return ret;
+            }
+
+            // default is NonZero
+            return FillRule::nonzero;
+        }
+
         const SvgNumberVector& SvgStyleAttributes::getStrokeDasharray() const
         {
             if(!maStrokeDasharray.empty())
commit 11d27bbbf106ba2029a0ba7e447bff6e2e6cbd7d
Author:     Caolán McNamara <[email protected]>
AuthorDate: Thu Jun 23 16:16:15 2022 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:18 2022 +0200

    tdf#149609 release mouse before showing popups from calc grid window
    
    If we capture the mouse in the course of the mouse down handler, then
    release it before showing a popup to undo any unhelpful seleng capture.
    
    Change-Id: I94ead6b516c2b2a019030e0e04760f8e07ff35d9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136329
    Tested-by: Jenkins
    Reviewed-by: Christian Lohmaier <[email protected]>

diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 3e3fbbe37768..3bdda8cf72fc 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -477,6 +477,7 @@ IMPL_LINK_NOARG(ScGridWindow, PopupModeEndHdl, 
weld::Popover&, void)
         mpFilterBox->SetCancelled();     // cancel select
         // restore the mouse capture state of the GridWindow to
         // what it was at initial popup time
+        SAL_WARN_IF(bMouseWasCaptured, "sc.ui", "Is there a scenario where the 
mouse was captured before mouse down?");
         if (bMouseWasCaptured)
             CaptureMouse();
     }
@@ -1801,6 +1802,9 @@ void ScGridWindow::HandleMouseButtonDown( const 
MouseEvent& rMEvt, MouseEventSta
     if (pScMod->IsModalMode(mrViewData.GetSfxDocShell()))
         return;
 
+    const bool bWasMouseCaptured = IsMouseCaptured();
+    SAL_WARN_IF(bWasMouseCaptured, "sc.ui", "Is there a scenario where the 
mouse is captured before mouse down?");
+
     pScActiveViewShell = mrViewData.GetViewShell();         // if left is 
clicked
     nScClickMouseModifier = rMEvt.GetModifier();            // to always catch 
a control click
 
@@ -2057,9 +2061,11 @@ void ScGridWindow::HandleMouseButtonDown( const 
MouseEvent& rMEvt, MouseEventSta
             tools::Rectangle aButtonRect = GetListValButtonRect( aListValPos );
             if ( aButtonRect.Contains( aPos ) )
             {
-                // tdf#125917 typically we have the mouse captured already, 
except if are editing the cell.
-                // Ensure its captured before the menu is launched even in the 
cell editing case
-                CaptureMouse();
+                // tdf#149609 if we captured the mouse in the course of this 
function
+                // release it before showing the data select menu to undo any 
unhelpful
+                // seleng capture
+                if (!bWasMouseCaptured && IsMouseCaptured())
+                    ReleaseMouse();
 
                 LaunchDataSelectMenu( aListValPos.Col(), aListValPos.Row() );
 
@@ -2075,7 +2081,11 @@ void ScGridWindow::HandleMouseButtonDown( const 
MouseEvent& rMEvt, MouseEventSta
     ScRange aScenRange;
     if ( rMEvt.IsLeft() && HasScenarioButton( aPos, aScenRange ) )
     {
-        CaptureMouse();
+        // tdf#149609 if we captured the mouse in the course of this function
+        // release it before showing the data scenario menu to undo any 
unhelpful
+        // seleng capture
+        if (!bWasMouseCaptured && IsMouseCaptured())
+            ReleaseMouse();
 
         DoScenarioMenu( aScenRange );
 
commit a31624f951bf4365239e8ac4578adec79a8d7880
Author:     László Németh <[email protected]>
AuthorDate: Tue Jul 19 14:53:52 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:18 2022 +0200

    tdf#148913 sw: fix crash with pending infobars on Windows
    
    Usage of VclPtr<SfxInfoBarWindow> wasn't thread-safe
    on Windows, resulting random crashing during loading big
    documents.
    
    Regression from commit d89786054715b44aa983d0752484216825c74ae2
    "tdf#125909 tdf#141298 sw: show (Hidden) Track Changes infobar".
    
    Change-Id: Ic6a6ad43a8cf7ea650ef6d1c0aa5c76c48763ea8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137230
    Tested-by: László Németh <[email protected]>
    Reviewed-by: László Németh <[email protected]>
    (cherry picked from commit 85a044abdf08bafa93e1caddf38f86e35d7e17f2)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137184
    Tested-by: Jenkins
    Reviewed-by: Christian Lohmaier <[email protected]>

diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index 2b58dd5a44bc..cca28ca016ba 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -1479,27 +1479,41 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, 
const SfxHint& rHint )
                         }
                     }
 
-                    VclPtr<SfxInfoBarWindow> pInfoBar =
-                        AppendInfoBar(aInfobarData.msId, 
aInfobarData.msPrimaryMessage,
+                    // Track Changes infobar: add a button to show/hide Track 
Changes functions
+                    // Hyphenation infobar: add a button to get more 
information
+                    // tdf#148913 limit VclPtr usage for these
+                    bool bTrackChanges = aInfobarData.msId == 
"hiddentrackchanges";
+                    if ( bTrackChanges || aInfobarData.msId == 
"hyphenationmissing" )
+                    {
+                        VclPtr<SfxInfoBarWindow> pInfoBar =
+                            AppendInfoBar(aInfobarData.msId, 
aInfobarData.msPrimaryMessage,
                                   aInfobarData.msSecondaryMessage, 
aInfobarData.maInfobarType,
                                   aInfobarData.mbShowCloseButton);
 
-                    // Track Changes infobar: add a button to show/hide Track 
Changes functions
-                    if ( pInfoBar && aInfobarData.msId == "hiddentrackchanges" 
)
-                    {
-                        weld::Button& rTrackChangesButton = 
pInfoBar->addButton();
-                        
rTrackChangesButton.set_label(SfxResId(STR_TRACK_CHANGES_BUTTON));
-                        rTrackChangesButton.connect_clicked(LINK(this,
+                        // tdf#148913 don't extend this condition to keep it 
thread-safe
+                        if (pInfoBar)
+                        {
+                            weld::Button& rButton = pInfoBar->addButton();
+                            rButton.set_label(SfxResId(bTrackChanges
+                                    ? STR_TRACK_CHANGES_BUTTON
+                                    : STR_HYPHENATION_BUTTON));
+                            if (bTrackChanges)
+                            {
+                                rButton.connect_clicked(LINK(this,
                                                     SfxViewFrame, 
HiddenTrackChangesHandler));
+                            }
+                            else
+                            {
+                                rButton.connect_clicked(LINK(this,
+                                                    SfxViewFrame, 
HyphenationMissingHandler));
+                            }
+                        }
                     }
-
-                    // Hyphenation infobar: add a button to get more 
information
-                    if ( pInfoBar && aInfobarData.msId == "hyphenationmissing" 
)
+                    else
                     {
-                        weld::Button& rHyphenationButton = 
pInfoBar->addButton();
-                        
rHyphenationButton.set_label(SfxResId(STR_HYPHENATION_BUTTON));
-                        rHyphenationButton.connect_clicked(LINK(this,
-                                                   SfxViewFrame, 
HyphenationMissingHandler));
+                        AppendInfoBar(aInfobarData.msId, 
aInfobarData.msPrimaryMessage,
+                                  aInfobarData.msSecondaryMessage, 
aInfobarData.maInfobarType,
+                                  aInfobarData.mbShowCloseButton);
                     }
 
                     aPendingInfobars.pop_back();
commit ee11eafda8a330c18f057373010edd52d7b46d00
Author:     Michael Stahl <[email protected]>
AuthorDate: Wed Aug 17 10:43:04 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:18 2022 +0200

    tdf#147466 sw_redlinehide: avoid crashing by delete un-deleting
    
    After the first delete, there is a single redline from 170,0 to 177,9,
    which contains a section.
    
    [ 169]  0x6133358            TextNode "b) 9 (Robin Cook, Jack Straw, 
Margaret Beckett, David Milliband, William Hague, Philip Hammond, Boris 
Johnson, Jeremy Hunt, Dominic Raab)",
    [ 170]  0x61349d8            TextNode "Hangul script is used to write which 
language?",
    [ 171]  0x61396f0         SectionNode ,
    [ 172]   0x6138cc8           TextNode "Japanese",
    [ 173]   0x613ab58           TextNode "Vietnamese",
    [ 174]   0x613ad78           TextNode "Korean",
    [ 175]   0x613bc28           TextNode "Chinese",
    [ 176]  0x24a61c0             EndNode ,
    [ 177]  0x6139568            TextNode "c) Korean",
    
    Then the next delete is from 169,137 to 170,0 and it is combined in
    AppendRedline() with the existing one, removing the existing one.
    
    Now the code for tdf#119571 at the end of AppendRedline() that splits up
    the one redline into 4 redlines, with the section start node and section
    end node not covered by any of them.
    
    AppendRedline() of a delete redline causing previously deleted nodes to
    become un-deleted is a situation that UpdateFramesForAddDeleteRedline()
    doesn't expect.
    
    Additionally there seems to be an issue with CheckParaRedlineMerge()
    setting the Section's m_bHiddenFlag, which was unintentional, it should
    only set m_eMerge flag, but fixing that isn't sufficient.
    
    Reportedly this crashes since commit
    6433dc223f6d21570e7132c4a580d186a5d5a334 but the problem appears older.
    
    Change-Id: Ic83a93d5aaec4ee562fb960693b52bd7b25cb1a3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138411
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <[email protected]>
    (cherry picked from commit 7d730cd580e957ab06b0c7f020ac37dd0c337aa2)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138417
    Reviewed-by: Thorsten Behrens <[email protected]>

diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx 
b/sw/source/core/doc/DocumentRedlineManager.cxx
index 8a9a70ae2bb9..5052e320f216 100644
--- a/sw/source/core/doc/DocumentRedlineManager.cxx
+++ b/sw/source/core/doc/DocumentRedlineManager.cxx
@@ -1666,8 +1666,13 @@ DocumentRedlineManager::AppendRedline(SwRangeRedline* 
pNewRedl, bool const bCall
                         pNewRedl->SetEnd( *pRStt, pEnd );
                     break;
 
-                case SwComparePosition::CollideStart:
                 case SwComparePosition::CollideEnd:
+                    if (pRStt->nContent != 0)
+                    {   // tdf#147466 HACK: don't combine in this case to 
avoid the tdf#119571 code from *undeleting* section nodes
+                        break;
+                    }
+                    [[fallthrough]];
+                case SwComparePosition::CollideStart:
                     if( pRedl->IsOwnRedline( *pNewRedl ) &&
                         pRedl->CanCombine( *pNewRedl ) )
                     {
diff --git a/sw/source/core/text/redlnitr.cxx b/sw/source/core/text/redlnitr.cxx
index 3613469d7703..5b1e30c47018 100644
--- a/sw/source/core/text/redlnitr.cxx
+++ b/sw/source/core/text/redlnitr.cxx
@@ -425,7 +425,7 @@ CheckParaRedlineMerge(SwTextFrame & rFrame, SwTextNode & 
rTextNode,
         }
         for (auto const pSectionNode : sections)
         {
-            pSectionNode->DelFrames(rFrame.getRootFrame());
+            
pSectionNode->GetSection().GetFormat()->DelFrames(/*rFrame.getRootFrame()*/);
         }
     }
     auto pRet(std::make_unique<sw::MergedPara>(rFrame, std::move(extents),
commit 612fc2f6e7065473833b4aac8ea76ec2bffdfd62
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed Aug 17 12:59:51 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:18 2022 +0200

    tdf#150452: Revert "tdf#130795 use concurrent hashmap in SharedStringPool"
    
    This commit reverts 3749d9af3745c0eaff7239e379578e4e2af89e9d
    which removes the dependency on the external library cuckoo
    
    Without using cuckoo the same file in tdf#130795 takes
    
    real    0m4,892s
    user    0m5,298s
    sys     0m0,449s
    
    With it, it takes
    
    real    0m4,914s
    user    0m5,276s
    sys     0m0,444s
    
    pretty much the same time
    
    Change-Id: I4cc9000ac5bf26de22bb9835283ae8d5b3230196
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138435
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>
    Reviewed-by: Xisco Fauli <[email protected]>
    Signed-off-by: Xisco Fauli <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138446

diff --git a/Makefile.fetch b/Makefile.fetch
index 87f423971455..1fa06a73d5ec 100644
--- a/Makefile.fetch
+++ b/Makefile.fetch
@@ -117,7 +117,6 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk 
$(SRCDIR)/download.lst $(S
                $(call fetch_Optional,COINMP,COINMP_TARBALL) \
                $(call fetch_Optional,CPPUNIT,CPPUNIT_TARBALL) \
                $(call fetch_Optional,CT2N,CT2N_TARBALL) \
-               $(call fetch_Optional,CUCKOO,CUCKOO_TARBALL) \
                $(call fetch_Optional,CURL,CURL_TARBALL) \
                $(call fetch_Optional,EBOOK,EBOOK_TARBALL) \
                $(call fetch_Optional,EPM,EPM_TARBALL) \
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index d86edc543e44..165290b57825 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -4360,37 +4360,4 @@ endif # ENABLE_ZXING
 
 endif # SYSTEM_ZXING
 
-
-
-ifneq ($(SYSTEM_CUCKOO),)
-
-gb_ExternalProject__use_cuckoo_headers :=
-
-define gb_LinkTarget__use_cuckoo_headers
-$(call gb_LinkTarget_set_include,$(1),\
-       -I$(call gb_UnpackedTarball_get_dir,cuckoo) \
-       $$(INCLUDE) \
-)
-
-endef
-
-else # !SYSTEM_CUCKOO
-
-define gb_ExternalProject__use_cuckoo_headers
-$(call gb_ExternalProject_use_unpacked,$(1),cuckoo)
-
-endef
-
-define gb_LinkTarget__use_cuckoo_headers
-$(call gb_LinkTarget_use_unpacked,$(1),cuckoo)
-$(call gb_LinkTarget_set_include,$(1),\
-       -I$(call gb_UnpackedTarball_get_dir,cuckoo) \
-       $$(INCLUDE) \
-)
-
-endef
-
-endif # SYSTEM_CUCKOO
-
-
 # vim: set noet sw=4 ts=4:
diff --git a/bin/oss-fuzz-setup.sh b/bin/oss-fuzz-setup.sh
index 18c3fcfb68d9..b2b0be8a0aae 100755
--- a/bin/oss-fuzz-setup.sh
+++ b/bin/oss-fuzz-setup.sh
@@ -23,7 +23,6 @@ curl --no-progress-meter -S \
     -C - -O https://dev-www.libreoffice.org/src/$BOX2D_TARBALL \
     -C - -O https://dev-www.libreoffice.org/src/$DTOA_TARBALL \
     -C - -O https://dev-www.libreoffice.org/src/$EXPAT_TARBALL \
-    -C - -O https://dev-www.libreoffice.org/src/$CUCKOO_TARBALL \
     -C - -O https://dev-www.libreoffice.org/src/$LIBJPEG_TURBO_TARBALL \
     -C - -O https://dev-www.libreoffice.org/src/$LCMS2_TARBALL \
     -C - -O https://dev-www.libreoffice.org/src/$LIBEXTTEXTCAT_TARBALL \
diff --git a/config_host.mk.in b/config_host.mk.in
index 5e3337a46eef..31a501327806 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -95,7 +95,6 @@ export CPPUNIT_CFLAGS=$(gb_SPACE)@CPPUNIT_CFLAGS@
 export CPPUNIT_LIBS=$(gb_SPACE)@CPPUNIT_LIBS@
 export CPUNAME=@CPUNAME@
 export CROSS_COMPILING=@CROSS_COMPILING@
-export CUCKOO_CFLAGS=$(gb_SPACE)@CUCKOO_CFLAGS@
 export CURL=@CURL@
 export CURL_CFLAGS=$(gb_SPACE)@CURL_CFLAGS@
 export CURL_LIBS=$(gb_SPACE)@CURL_LIBS@
@@ -598,7 +597,6 @@ export SYSTEM_BZIP2=@SYSTEM_BZIP2@
 export SYSTEM_CAIRO=@SYSTEM_CAIRO@
 export SYSTEM_CLUCENE=@SYSTEM_CLUCENE@
 export SYSTEM_CPPUNIT=@SYSTEM_CPPUNIT@
-export SYSTEM_CUCKOO=@SYSTEM_CUCKOO@
 export SYSTEM_CURL=@SYSTEM_CURL@
 export SYSTEM_DICTS=@SYSTEM_DICTS@
 export SYSTEM_EXPAT=@SYSTEM_EXPAT@
diff --git a/configure.ac b/configure.ac
index 16611284b0b9..1bbf6b84ef35 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2376,11 +2376,6 @@ AC_ARG_WITH(system-boost,
         [Use boost already on system.]),,
     [with_system_boost="$with_system_headers"])
 
-AC_ARG_WITH(system-cuckoo,
-    AS_HELP_STRING([--with-system-cuckoo],
-        [Use libcuckoo already on system.]),,
-    [with_system_cuckoo="$with_system_headers"])
-
 AC_ARG_WITH(system-glm,
     AS_HELP_STRING([--with-system-glm],
         [Use glm already on system.]),,
@@ -5622,7 +5617,6 @@ if test "$cross_compiling" = "yes"; then
         BOOST
         CAIRO
         CLUCENE
-        CUCKOO
         CURL
         DBCONNECTIVITY
         DESKTOP
@@ -10457,26 +10451,6 @@ dnl Check for system mdds
 dnl ===================================================================
 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], 
["-I${WORKDIR}/UnpackedTarball/mdds/include"])
 
-dnl ===================================================================
-dnl Check for system cuckoo
-dnl ===================================================================
-AC_MSG_CHECKING([which cuckoo to use])
-if test "$with_system_cuckoo" = "yes"; then
-    AC_MSG_RESULT([external])
-    SYSTEM_CUCKOO=TRUE
-    AC_LANG_PUSH([C++])
-    AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
-       [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install 
cuckoo])], [])
-    AC_LANG_POP([C++])
-else
-    AC_MSG_RESULT([internal])
-    BUILD_TYPE="$BUILD_TYPE CUCKOO"
-    SYSTEM_CUCKOO=
-    CUCKOO_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/cuckoo"
-fi
-AC_SUBST([CUCKOO_CFLAGS])
-AC_SUBST([SYSTEM_CUCKOO])
-
 dnl ===================================================================
 dnl Check for system glm
 dnl ===================================================================
diff --git a/distro-configs/LibreOfficeCoverity.conf 
b/distro-configs/LibreOfficeCoverity.conf
index e802f25e8f29..51f80628701a 100644
--- a/distro-configs/LibreOfficeCoverity.conf
+++ b/distro-configs/LibreOfficeCoverity.conf
@@ -11,7 +11,6 @@
 --with-idlc-cpp=cpp
 --with-system-libs
 --with-system-headers
---without-system-cuckoo
 --without-system-cppunit
 --enable-dbus
 --enable-extension-integration
diff --git a/distro-configs/LibreOfficeFlatpak.conf 
b/distro-configs/LibreOfficeFlatpak.conf
index 438252c6c408..f6f12f776043 100644
--- a/distro-configs/LibreOfficeFlatpak.conf
+++ b/distro-configs/LibreOfficeFlatpak.conf
@@ -19,7 +19,6 @@
 --without-system-clucene
 --without-system-coinmp
 --without-system-cppunit
---without-system-cuckoo
 --without-system-firebird
 --without-system-glm
 --without-system-gpgmepp
diff --git a/download.lst b/download.lst
index 505bb3027d5b..0c0ab469de95 100644
--- a/download.lst
+++ b/download.lst
@@ -294,5 +294,3 @@ export ZXING_TARBALL := zxing-cpp-1.2.0.tar.gz
 NUMBERTEXT_EXTENSION_SHA256SUM := 
1568ed1d2feb8210bb5de61d69574a165cded536cfa17c6953c9064076469de2
 export OPENSYMBOL_SHA256SUM := 
f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140
 export OPENSYMBOL_TTF := 
f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
-export CUCKOO_SHA256SUM := 
471dd83a813ed2816c2246c373004470ad0f6612c7ce72038929dc5161cdd58e
-export CUCKOO_TARBALL := 
libcuckoo-93217f8d391718380c508a722ab9acd5e9081233.tar.gz
diff --git a/external/Module_external.mk b/external/Module_external.mk
index 4e1a04ccc317..f5c55cf716b4 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -106,7 +106,6 @@ $(eval $(call gb_Module_add_moduledirs,external,\
        $(call gb_Helper_optional,XSLTML,xsltml) \
        $(call gb_Helper_optional,ZLIB,zlib) \
        $(call gb_Helper_optional,ZMF,libzmf) \
-       $(call gb_Helper_optional,CUCKOO,cuckoo) \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/cuckoo/Makefile b/external/cuckoo/Makefile
deleted file mode 100644
index e4968cf85fb6..000000000000
--- a/external/cuckoo/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-
-module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
-
-include $(module_directory)/../../solenv/gbuild/partial_build.mk
-
-# vim: set noet sw=4 ts=4:
diff --git a/external/cuckoo/Module_cuckoo.mk b/external/cuckoo/Module_cuckoo.mk
deleted file mode 100644
index d2fda7b1e286..000000000000
--- a/external/cuckoo/Module_cuckoo.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_Module_Module,cuckoo))
-
-$(eval $(call gb_Module_add_targets,cuckoo,\
-       UnpackedTarball_cuckoo \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/external/cuckoo/README b/external/cuckoo/README
deleted file mode 100644
index 6b8c98342173..000000000000
--- a/external/cuckoo/README
+++ /dev/null
@@ -1,3 +0,0 @@
-A high-performance, concurrent hash table
-
-[https://github.com/efficient/libcuckoo]
\ No newline at end of file
diff --git a/external/cuckoo/UnpackedTarball_cuckoo.mk 
b/external/cuckoo/UnpackedTarball_cuckoo.mk
deleted file mode 100644
index e0426181b3a7..000000000000
--- a/external/cuckoo/UnpackedTarball_cuckoo.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_UnpackedTarball_UnpackedTarball,cuckoo))
-
-$(eval $(call gb_UnpackedTarball_set_tarball,cuckoo,$(CUCKOO_TARBALL)))
-
-$(eval $(call gb_UnpackedTarball_set_patchlevel,cuckoo,0))
-
-$(eval $(call gb_UnpackedTarball_update_autoconf_configs,cuckoo))
-
-$(eval $(call gb_UnpackedTarball_add_patches,cuckoo,\
-       external/cuckoo/cuckoo-coverity.patch \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/external/cuckoo/cuckoo-coverity.patch 
b/external/cuckoo/cuckoo-coverity.patch
deleted file mode 100644
index 273d3bf1f0e3..000000000000
--- a/external/cuckoo/cuckoo-coverity.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- libcuckoo/cuckoohash_map.hh        2021-09-11 11:29:05.656553870 +0100
-+++ libcuckoo/cuckoohash_map.hh        2021-09-11 11:31:48.265203248 +0100
-@@ -866,7 +866,8 @@
- 
-   class TwoBuckets {
-   public:
--    TwoBuckets() {}
-+    TwoBuckets()
-+        : i1(0), i2(0) {}
-     TwoBuckets(size_type i1_, size_type i2_, locked_table_mode)
-         : i1(i1_), i2(i2_) {}
-     TwoBuckets(locks_t &locks, size_type i1_, size_type i2_, normal_mode)
-@@ -1552,7 +1553,8 @@
-                   " MAX_BFS_PATH_LEN - 1");
-     static_assert(-1 >= std::numeric_limits<decltype(depth)>::min(),
-                   "The depth type must be able to hold a value of -1");
--    b_slot() {}
-+    b_slot()
-+        : bucket(0), pathcode(0), depth(0) {}
-     b_slot(const size_type b, const uint16_t p, const decltype(depth) d)
-         : bucket(b), pathcode(p), depth(d) {
-       assert(d < MAX_BFS_PATH_LEN);
diff --git a/readlicense_oo/license/license.xml 
b/readlicense_oo/license/license.xml
index 2773e9df790f..53de23155b1d 100644
--- a/readlicense_oo/license/license.xml
+++ b/readlicense_oo/license/license.xml
@@ -676,12 +676,6 @@
         <p><a href="#a__LGPL_version_2">Jump to LGPL Version 2</a></p>
         <p><a href="#a__MPL_version_1_1">Jump to MPL Version 1.1</a></p>
     </div>
-    <div class="LIBCUCKOO" >
-        <h2>libcuckoo</h2>
-        <p>The following software may be included in this product: libcuckoo. 
Use of any of this software is governed by
-        the terms of the license below:</p>
-        <p><a href="#a__Apache_License_version_2_0">Jump to Apache License 
Version 2.0</a></p>
-    </div>
     <div class="CURL" >
         <h2>libcurl</h2>
         <p>The following software may be included in this product: libcurl. 
Use of any of this software is governed by
diff --git a/solenv/flatpak-manifest.in b/solenv/flatpak-manifest.in
index 4adee8d75cdb..8d6cd88a2a33 100644
--- a/solenv/flatpak-manifest.in
+++ b/solenv/flatpak-manifest.in
@@ -682,13 +682,6 @@
                     "type": "file",
                     "dest": "external/tarballs",
                     "dest-filename": "@OPENSYMBOL_TTF@"
-                },
-                {
-                    "url": 
"https://dev-www.libreoffice.org/src/@CUCKOO_TARBALL@";,
-                    "sha256": "@CUCKOO_SHA256SUM@",
-                    "type": "file",
-                    "dest": "external/tarballs",
-                    "dest-filename": "@CUCKOO_TARBALL@"
                 }
                 {
                     "url": 
"https://github.com/antijingoist/opendyslexic/releases/download/v0.9.10/opendyslexic-0.9.10-beta-2019.09.16.zip";,
diff --git a/svl/Library_svl.mk b/svl/Library_svl.mk
index 4e388ca0d471..6e79be4fcf06 100644
--- a/svl/Library_svl.mk
+++ b/svl/Library_svl.mk
@@ -21,7 +21,6 @@ $(eval $(call gb_Library_Library,svl))
 
 $(eval $(call gb_Library_use_externals,svl,\
     boost_headers \
-    cuckoo_headers \
     $(if $(filter LINUX MACOSX ANDROID iOS %BSD SOLARIS HAIKU,$(OS)), \
         curl) \
     dtoa \
diff --git a/svl/source/misc/sharedstringpool.cxx 
b/svl/source/misc/sharedstringpool.cxx
index d88b0a2c22ef..2fe8fd8a13ff 100644
--- a/svl/source/misc/sharedstringpool.cxx
+++ b/svl/source/misc/sharedstringpool.cxx
@@ -15,64 +15,50 @@
 #include <unordered_map>
 #include <unordered_set>
 
-#ifdef __GNUC__
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wshadow"
-#endif
-#if defined __clang__
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunused-parameter"
-#endif
-#if defined _MSC_VER
-#pragma warning(push)
-#pragma warning(disable : 4324) // structure was padded due to alignment 
specifier
-#endif
-#include <libcuckoo/cuckoohash_map.hh>
-#if defined _MSC_VER
-#pragma warning(pop)
-#endif
-#if defined __clang__
-#pragma clang diagnostic pop
-#endif
-#ifdef __GNUC__
-#pragma GCC diagnostic pop
-#endif
-
-namespace svl
-{
+/** create a key class that caches the hashcode */
 namespace
 {
-sal_Int32 getRefCount(const rtl_uString* p) { return (p->refCount & 
0x3FFFFFFF); }
-
-// we store the key twice, because the concurrent hashtable we are using does 
not provide any way to return the key in use
-typedef std::pair<OUString, OUString> Mapped;
-
-struct HashFunction
+struct StringWithHash
 {
-    size_t operator()(rtl_uString* const key) const
+    OUString str;
+    sal_Int32 hashCode;
+    StringWithHash(OUString s)
+        : str(s)
+        , hashCode(s.hashCode())
     {
-        return rtl_ustr_hashCode_WithLength(key->buffer, key->length);
     }
-};
 
-struct EqualsFunction
-{
-    bool operator()(rtl_uString* const lhs, rtl_uString* const rhs) const
+    bool operator==(StringWithHash const& rhs) const
     {
-        return OUString::unacquired(&lhs) == OUString::unacquired(&rhs);
+        if (hashCode != rhs.hashCode)
+            return false;
+        return str == rhs.str;
     }
 };
 }
 
+namespace std
+{
+template <> struct hash<StringWithHash>
+{
+    std::size_t operator()(const StringWithHash& k) const { return k.hashCode; 
}
+};
+}
+
+namespace svl
+{
+namespace
+{
+sal_Int32 getRefCount(const rtl_uString* p) { return (p->refCount & 
0x3FFFFFFF); }
+}
+
 struct SharedStringPool::Impl
 {
+    mutable std::mutex maMutex;
     // We use this map for two purposes - to store lower->upper case mappings
-    // and to store an upper->upper mapping.
-    // The second mapping is used so that we can
-    // share the same rtl_uString object between different keys which map to 
the same uppercase string to save memory.
-    //
-    // Docs for this concurrent hashtable here: 
http://efficient.github.io/libcuckoo/classlibcuckoo_1_1cuckoohash__map.html
-    libcuckoo::cuckoohash_map<rtl_uString*, Mapped, HashFunction, 
EqualsFunction> maStrMap;
+    // and to retrieve a shared uppercase object, so the management logic
+    // is quite complex.
+    std::unordered_map<StringWithHash, OUString> maStrMap;
     const CharClass& mrCharClass;
 
     explicit Impl(const CharClass& rCharClass)
@@ -90,50 +76,43 @@ SharedStringPool::~SharedStringPool() {}
 
 SharedString SharedStringPool::intern(const OUString& rStr)
 {
-    auto& rMap = mpImpl->maStrMap;
+    StringWithHash aStrWithHash(rStr);
+    std::scoped_lock<std::mutex> aGuard(mpImpl->maMutex);
 
-    rtl_uString *pResultLower = {}, *pResultUpper = {}; // bogus GCC 12 
-Werror=maybe-uninitialized
-    if (rMap.find_fn(rStr.pData, [&](const Mapped& rMapped) {
-            pResultLower = rMapped.first.pData;
-            pResultUpper = rMapped.second.pData;
-        }))
+    auto[mapIt, bInserted] = mpImpl->maStrMap.emplace(aStrWithHash, rStr);
+    if (!bInserted)
         // there is already a mapping
-        return SharedString(pResultLower, pResultUpper);
+        return SharedString(mapIt->first.str.pData, mapIt->second.pData);
 
     // This is a new string insertion. Establish mapping to upper-case variant.
     OUString aUpper = mpImpl->mrCharClass.uppercase(rStr);
-
-    // either insert a new upper->upper mapping, or write the existing mapping 
into aUpper
-    mpImpl->maStrMap.uprase_fn(aUpper.pData,
-                               [&](Mapped& mapped) -> bool {
-                                   aUpper = mapped.second;
-                                   return false;
-                               },
-                               aUpper, aUpper);
-
     if (aUpper == rStr)
-        // no need to do anything more, because the key is already uppercase
-        return SharedString(aUpper.pData, aUpper.pData);
-
-    // either insert a new lower->upper mapping, or write the existing mapping 
into aLower
-    if (mpImpl->maStrMap.uprase_fn(rStr.pData,
-                                   [&](Mapped& mapped) -> bool {
-                                       pResultLower = mapped.first.pData;
-                                       pResultUpper = mapped.second.pData;
-                                       return false;
-                                   },
-                                   rStr, aUpper))
+        // no need to do anything more, because we inserted an upper->upper 
mapping
+        return SharedString(mapIt->first.str.pData, mapIt->second.pData);
+
+    // We need to insert a lower->upper mapping, so also insert
+    // an upper->upper mapping, which we can use both for when an upper string
+    // is interned, and to look up a shared upper string.
+    StringWithHash aUpperWithHash(aUpper);
+    auto mapIt2 = mpImpl->maStrMap.find(aUpperWithHash);
+    if (mapIt2 != mpImpl->maStrMap.end())
     {
-        pResultLower = rStr.pData;
-        pResultUpper = aUpper.pData;
+        // there is an already existing upper string
+        mapIt->second = mapIt2->first.str;
+        return SharedString(mapIt->first.str.pData, mapIt->second.pData);
     }
 
-    return SharedString(pResultLower, pResultUpper);
+    // There is no already existing upper string.
+    // First, update using the iterator, can't do this later because
+    // the iterator will be invalid.
+    mapIt->second = aUpper;
+    mpImpl->maStrMap.emplace_hint(mapIt2, aUpperWithHash, aUpper);
+    return SharedString(rStr.pData, aUpper.pData);
 }
 
 void SharedStringPool::purge()
 {
-    auto locked_table = mpImpl->maStrMap.lock_table();
+    std::scoped_lock<std::mutex> aGuard(mpImpl->maMutex);
 
     // Because we can have an uppercase entry mapped to itself,
     // and then a bunch of lowercase entries mapped to that same
@@ -141,12 +120,12 @@ void SharedStringPool::purge()
     // time to remove lowercase entries, and then only can we
     // check for unused uppercase entries.
 
-    auto it = locked_table.begin();
-    auto itEnd = locked_table.end();
+    auto it = mpImpl->maStrMap.begin();
+    auto itEnd = mpImpl->maStrMap.end();
     while (it != itEnd)
     {
-        rtl_uString* p1 = it->second.first.pData;
-        rtl_uString* p2 = it->second.second.pData;
+        rtl_uString* p1 = it->first.str.pData;
+        rtl_uString* p2 = it->second.pData;
         if (p1 != p2)
         {
             // normal case - lowercase mapped to uppercase, which
@@ -154,19 +133,19 @@ void SharedStringPool::purge()
             // entry as the key in the map
             if (getRefCount(p1) == 1)
             {
-                it = locked_table.erase(it);
+                it = mpImpl->maStrMap.erase(it);
                 continue;
             }
         }
         ++it;
     }
 
-    it = locked_table.begin();
-    itEnd = locked_table.end();
+    it = mpImpl->maStrMap.begin();
+    itEnd = mpImpl->maStrMap.end();
     while (it != itEnd)
     {
-        rtl_uString* p1 = it->second.first.pData;
-        rtl_uString* p2 = it->second.second.pData;
+        rtl_uString* p1 = it->first.str.pData;
+        rtl_uString* p2 = it->second.pData;
         if (p1 == p2)
         {
             // uppercase which is mapped to itself, which means
@@ -174,7 +153,7 @@ void SharedStringPool::purge()
             // one ref-counted entry in the value in the map
             if (getRefCount(p1) == 2)
             {
-                it = locked_table.erase(it);
+                it = mpImpl->maStrMap.erase(it);
                 continue;
             }
         }
@@ -182,15 +161,19 @@ void SharedStringPool::purge()
     }
 }
 
-size_t SharedStringPool::getCount() const { return mpImpl->maStrMap.size(); }
+size_t SharedStringPool::getCount() const
+{
+    std::scoped_lock<std::mutex> aGuard(mpImpl->maMutex);
+    return mpImpl->maStrMap.size();
+}
 
 size_t SharedStringPool::getCountIgnoreCase() const
 {
+    std::scoped_lock<std::mutex> aGuard(mpImpl->maMutex);
     // this is only called from unit tests, so no need to be efficient
     std::unordered_set<OUString> aUpperSet;
-    auto locked_table = mpImpl->maStrMap.lock_table();
-    for (auto const& pair : locked_table)
-        aUpperSet.insert(pair.second.second);
+    for (auto const& pair : mpImpl->maStrMap)
+        aUpperSet.insert(pair.second);
     return aUpperSet.size();
 }
 }
commit 9662729a1ea4ca7fe8bbbcb5193a6eeb97ff8ac6
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed Aug 17 16:29:44 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:18 2022 +0200

    tdf#150170: Revert "flatten TableType in ColumnSpanSet"
    
    This reverts commit 99cd1d8834bb708afc81c825ff2b7992b7acb37d.
    
    This commit is only reverted in libreoffice-7-3 branch.
    In master and libreoffice-7-4 the issue is not reproducible
    after the default Calc number of columns was increased to 16384
    
    Change-Id: I28dcc1c56c803d49ea101dbb0ace7085f7a78820
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138445
    Reviewed-by: Noel Grandin <[email protected]>
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/sc/inc/columnspanset.hxx b/sc/inc/columnspanset.hxx
index d8cfc41f524b..d95ac9c82fc1 100644
--- a/sc/inc/columnspanset.hxx
+++ b/sc/inc/columnspanset.hxx
@@ -11,7 +11,6 @@
 
 #include "address.hxx"
 
-#include <optional>
 #include <vector>
 #include <mdds/flat_segment_tree.hpp>
 
@@ -60,7 +59,7 @@ private:
         ColumnType(SCROW nStart, SCROW nEnd, bool bInit);
     };
 
-    typedef std::vector<std::optional<ColumnType>> TableType;
+    typedef std::vector<std::unique_ptr<ColumnType>> TableType;
 
     std::vector<TableType> maTables;
 
diff --git a/sc/source/core/data/columnspanset.cxx 
b/sc/source/core/data/columnspanset.cxx
index eb09ea26be98..fc7235fda356 100644
--- a/sc/source/core/data/columnspanset.cxx
+++ b/sc/source/core/data/columnspanset.cxx
@@ -74,7 +74,7 @@ ColumnSpanSet::ColumnType& ColumnSpanSet::getColumn(const 
ScDocument& rDoc, SCTA
         rTab.resize(nCol+1);
 
     if (!rTab[nCol])
-        rTab[nCol].emplace(0, rDoc.MaxRow(), /*bInit*/false);
+        rTab[nCol].reset(new ColumnType(0, rDoc.MaxRow(), /*bInit*/false));
 
     return *rTab[nCol];
 }
@@ -165,7 +165,7 @@ void ColumnSpanSet::executeAction(ScDocument& rDoc, Action& 
ac) const
                 break;
 
             ac.startColumn(nTab, nCol);
-            const ColumnType& rCol = *rTab[nCol];
+            ColumnType& rCol = *rTab[nCol];
             ColumnSpansType::const_iterator it = rCol.maSpans.begin(), itEnd = 
rCol.maSpans.end();
             SCROW nRow1, nRow2;
             nRow1 = it->first;
@@ -203,7 +203,7 @@ void ColumnSpanSet::executeColumnAction(ScDocument& rDoc, 
ColumnAction& ac) cons
 
             ScColumn& rColumn = pTab->aCol[nCol];
             ac.startColumn(&rColumn);
-            const ColumnType& rCol = *rTab[nCol];
+            ColumnType& rCol = *rTab[nCol];
             ColumnSpansType::const_iterator it = rCol.maSpans.begin(), itEnd = 
rCol.maSpans.end();
             SCROW nRow1, nRow2;
             nRow1 = it->first;
commit 0d68ff1c2eb2fdd85909fd440f9182b1340300b7
Author:     Caolán McNamara <[email protected]>
AuthorDate: Mon Aug 15 11:57:57 2022 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:17 2022 +0200

    Resolves: tdf#149858 embedded starmath not using correct initial zoom
    
    since...
    
    commit ea21b870f8549d0110ef65187af50694a06458ca
    Date:   Mon Apr 19 15:22:22 2021 +0100
    
        weld SmGraphicWindow
    
    where the outer Window is not directly drawn into any more
    
    Change-Id: I70f45590f0fb7ff2f7af80da8873d580d219aca4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138280
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/starmath/inc/view.hxx b/starmath/inc/view.hxx
index 4ab877358f94..3094eaf6ebbd 100644
--- a/starmath/inc/view.hxx
+++ b/starmath/inc/view.hxx
@@ -54,9 +54,6 @@ private:
 
     DECL_LINK(ScrollHdl, weld::ScrolledWindow&, void);
 
-    void SetGraphicMapMode(const MapMode& rNewMapMode);
-    MapMode GetGraphicMapMode() const;
-
 public:
     explicit SmGraphicWindow(SmViewShell& rShell);
     virtual void dispose() override;
@@ -75,6 +72,9 @@ public:
     virtual void Resize() override;
     void ShowContextMenu(const CommandEvent& rCEvt);
 
+    void SetGraphicMapMode(const MapMode& rNewMapMode);
+    MapMode GetGraphicMapMode() const;
+
     SmGraphicWidget& GetGraphicWidget()
     {
         return *mxGraphic;
diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx
index f2d5859a0da1..7ebd822c7ed3 100644
--- a/starmath/source/view.cxx
+++ b/starmath/source/view.cxx
@@ -1101,8 +1101,12 @@ void SmViewShell::InnerResizePixel(const Point &rOfs, 
const Size &rSize, bool)
     if ( !aObjSize.IsEmpty() )
     {
         Size aProvidedSize = GetWindow()->PixelToLogic(rSize, 
MapMode(MapUnit::Map100thMM));
-        SfxViewShell::SetZoomFactor( Fraction( aProvidedSize.Width(), 
aObjSize.Width() ),
-                        Fraction( aProvidedSize.Height(), aObjSize.Height() ) 
);
+        Fraction aZoomX(aProvidedSize.Width(), aObjSize.Width());
+        Fraction aZoomY(aProvidedSize.Height(), aObjSize.Height());
+        MapMode aMap(mxGraphicWindow->GetGraphicMapMode());
+        aMap.SetScaleX(aZoomX);
+        aMap.SetScaleY(aZoomY);
+        mxGraphicWindow->SetGraphicMapMode(aMap);
     }
 
     SetBorderPixel( SvBorder() );
commit b1996ece575196052ee09833c8a887238c3e2972
Author:     Michael Stahl <[email protected]>
AuthorDate: Fri Aug 12 16:43:12 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:17 2022 +0200

    tdf#149921 ucb: webdav-curl: WNT: certificate revocation check
    
    - don't require it to be successful.
    
    Trying to connect to a server with self-signed CA results in:
    
    
warn:ucb.ucp.webdav.curl:6796:6568:ucb/source/ucp/webdav-curl/CurlSession.cxx:946:
    curl_easy_perform failed: (35) schannel: next InitializeSecurityContext 
failed:
    Unknown error (0x80092012) - The revocation function was unable to check 
revocation for the certificate.
    
    Apparently schannel wants to check by default (called with
    SCH_CRED_REVOCATION_CHECK_CHAIN) that all the certificates aren't
    revoked, but the self-signed CA doesn't specify how to check.
    
    Set it to only check revocation when the way to do so actually works,
    via CURLSSLOPT_REVOKE_BEST_EFFORT, which sets these flags:
    SCH_CRED_IGNORE_NO_REVOCATION_CHECK | SCH_CRED_IGNORE_REVOCATION_OFFLINE | 
SCH_CRED_REVOCATION_CHECK_CHAIN
    
    Change-Id: I6d77ca23fe2012d8a5d65000b14775070b5c9a0f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138204
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <[email protected]>
    (cherry picked from commit f6a0ca0e92e41ad8fea71acdacdc7ec5e775dc59)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138276
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/ucb/source/ucp/webdav-curl/CurlSession.cxx 
b/ucb/source/ucp/webdav-curl/CurlSession.cxx
index 7d56dfebd3e4..fe3b316c4a14 100644
--- a/ucb/source/ucp/webdav-curl/CurlSession.cxx
+++ b/ucb/source/ucp/webdav-curl/CurlSession.cxx
@@ -680,8 +680,17 @@ 
CurlSession::CurlSession(uno::Reference<uno::XComponentContext> const& xContext,
     rc = curl_easy_setopt(m_pCurl.get(), CURLOPT_READFUNCTION, &read_callback);
     assert(rc == CURLE_OK);
     rc = curl_easy_setopt(m_pCurl.get(), CURLOPT_HEADERFUNCTION, 
&header_callback);
-    // set this initially, may be overwritten during authentication
     assert(rc == CURLE_OK);
+    // tdf#149921 by default, with schannel (WNT) connection fails if 
revocation
+    // lists cannot be checked; try to limit the checking to when revocation
+    // lists can actually be retrieved (usually not the case for self-signed 
CA)
+#if CURL_AT_LEAST_VERSION(7, 70, 0)
+    rc = curl_easy_setopt(m_pCurl.get(), CURLOPT_SSL_OPTIONS, 
CURLSSLOPT_REVOKE_BEST_EFFORT);
+    assert(rc == CURLE_OK);
+    rc = curl_easy_setopt(m_pCurl.get(), CURLOPT_PROXY_SSL_OPTIONS, 
CURLSSLOPT_REVOKE_BEST_EFFORT);
+    assert(rc == CURLE_OK);
+#endif
+    // set this initially, may be overwritten during authentication
     rc = curl_easy_setopt(m_pCurl.get(), CURLOPT_HTTPAUTH, CURLAUTH_ANY);
     assert(rc == CURLE_OK); // ANY is always available
     // always set CURLOPT_PROXY to suppress proxy detection in libcurl
commit 98d704bce3e0444a1c08bc1218ab4c48a9eb22d9
Author:     Caolán McNamara <[email protected]>
AuthorDate: Thu Aug 11 11:04:14 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:17 2022 +0200

    connectivity: avoid divide by zero in calculateTimeOuts
    
    See 
https://crashreport.libreoffice.org/stats/signature/connectivity::OConnectionPool::propertyChange(com::sun::star::beans::PropertyChangeEvent%20const%20&)
    
    To reproduce this, blow away your config and start writer, visit tools,
    options, base, connections and enable connection pooling enabled, find
    com.sun.star.sdbcx.comp.hdqldb.Driver and "enable pooling for this
    driver" and "apply" with the default 120 seconds, ok and exit
    
    then open a database (based on hsqldb) and click on "tables" (to start a
    connection) that default 120 seconds is the input for calculateTimeOuts
    (this becomes a final m_nALiveCount of 10 by the divide by 20), now
    visit the options again and change the 120 to something else and ok and
    the input for calculateTimeOuts is the old "10" calculated before and
    not the new expected value.
    
    The reason appears to be in OConnectionPool::propertyChange, it expects
    to get the new value of the property from evt.NewValue but it gets an
    empty Any so the m_nALiveCount is not actually changed, so the
    assumption it was set and will be >= 20 and sanely divisible by 20
    doesn't hold.
    
    For this easy fix, fetch the new value explicitly from the config
    
    Change-Id: Ie91bf5328634f9aafbda1814b10c29b86a3f9cbe
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138119
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/connectivity/source/cpool/ZConnectionPool.cxx 
b/connectivity/source/cpool/ZConnectionPool.cxx
index cc90fa464e16..23e6dda1d226 100644
--- a/connectivity/source/cpool/ZConnectionPool.cxx
+++ b/connectivity/source/cpool/ZConnectionPool.cxx
@@ -282,7 +282,7 @@ void SAL_CALL OConnectionPool::propertyChange( const 
PropertyChangeEvent& evt )
 {
     if(TIMEOUT_NODENAME == evt.PropertyName)
     {
-        evt.NewValue >>= m_nALiveCount;
+        OPoolCollection::getNodeValue(TIMEOUT_NODENAME, m_xDriverNode) >>= 
m_nALiveCount;
         calculateTimeOuts();
     }
 }
commit 31291c5ba744077004d1099412787697e1c94c80
Author:     Michael Stahl <[email protected]>
AuthorDate: Fri Aug 12 17:39:18 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:17 2022 +0200

    sw: fix crash in InitBookmarks() with forum-mso-en-8410.docx
    
    Error: attempt to dereference a past-the-end iterator.
    
    Probably this only crashes in the assert(iter->pNode...) as the rest of
    the function already checks that "iter == end".
    
    (regression from commit 46e04a712e97f9095ef4da7f0e52f50cf2bfbb32)
    
    Change-Id: If652a15d1cdebb21fbce028fceeaee8dce8f7f6d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138130
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx
index c09aede4c5d6..6cf02c1f075b 100644
--- a/sw/source/core/text/porlay.cxx
+++ b/sw/source/core/text/porlay.cxx
@@ -1033,6 +1033,10 @@ static void InitBookmarks(
                 break;
             }
         }
+        if (iter == end)
+        {
+            break; // remaining marks are hidden
+        }
     }
 }
 
commit cd53742463a498f69823498e17b44685e24b60a8
Author:     Jean-Pierre Ledure <[email protected]>
AuthorDate: Wed Aug 10 16:07:07 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:17 2022 +0200

    ScriptForge - tdf#149983 dialog.EndExecute() failure
    
    In SF_PythonHelper._PythonDispatcher():
    
    Force a hardcoded call of the methods in the Dialog
    service which may potentially be invoked while the
    dialog is displayed, bypassing the generic CallByName()
    Basic builtin function:
       Activate
       Controls
       EndExecute
       Execute
    
    (Controls is already hardcoded because returning an array)
    
    Patch on master: https://gerrit.libreoffice.org/c/core/+/137084
    Patch on libreoffice-7-4: https://gerrit.libreoffice.org/c/core/+/137113
    
    Change-Id: I1d2ef4d6e5d5e2863ac39ce646084cbd9265fe84
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138093
    Tested-by: Jenkins
    Tested-by: Jean-Pierre Ledure <[email protected]>
    Reviewed-by: Jean-Pierre Ledure <[email protected]>
    Reviewed-by: Rafael Lima <[email protected]>

diff --git a/wizards/source/scriptforge/SF_PythonHelper.xba 
b/wizards/source/scriptforge/SF_PythonHelper.xba
index 5b919ba5abe1..d257df3cab27 100644
--- a/wizards/source/scriptforge/SF_PythonHelper.xba
+++ b/wizards/source/scriptforge/SF_PythonHelper.xba
@@ -614,6 +614,7 @@ Const cstArgArray = 512             &apos;  Any argument 
can be a 2D array
 Const cstRetArray = 1024       &apos;  Return value can be an array
 Const cstUno = 256                     &apos;  Return value can be a UNO object
 Const cstObject = 2048         &apos;  1st argument is a Basic object when 
numeric
+Const cstHardCode = 4096       &apos;  Method must not be executed with 
CallByName()
 &apos; Object nature in returned array
 Const objMODULE = 1, objCLASS = 2, objUNO = 3
 
@@ -792,6 +793,17 @@ Try:
                                                If Script = 
&quot;Controls&quot; Then           vReturn = vBasicObject.Controls(vArgs(0))
                                End Select
                        
+                       &apos;  Methods in class modules may better not be 
executed with CallByName()
+                       ElseIf bBasicClass And ((CallType And vbMethod) + 
(CallType And cstHardCode)) = vbMethod + cstHardCode Then
+                               Select Case sServiceName
+                                       Case &quot;SFDialogs.Dialog&quot;
+                                               Select Case Script
+                                                       Case 
&quot;Activate&quot;                       :       vReturn = 
vBasicObject.Activate()
+                                                       Case 
&quot;EndExecute&quot;             :       vReturn = 
vBasicObject.EndExecute(vArgs(0))
+                                                       Case 
&quot;Execute&quot;                        :       vReturn = 
vBasicObject.Execute(vArgs(0))
+                                               End Select
+                               End Select
+
                        &apos;  Methods in class modules are invoked with 
CallByName
                        ElseIf bBasicClass And ((CallType And vbMethod) = 
vbMethod) Then
                                Select Case UBound(vArgs)
diff --git a/wizards/source/scriptforge/python/scriptforge.py 
b/wizards/source/scriptforge/python/scriptforge.py
index 9dc95d21f715..894ead016574 100644
--- a/wizards/source/scriptforge/python/scriptforge.py
+++ b/wizards/source/scriptforge/python/scriptforge.py
@@ -445,6 +445,7 @@ class SFServices(object):
     flgArrayRet = 1024  # Invoked service method can return a 2D array 
(standard modules) or any array (class modules)
     flgUno = 256  # Invoked service method/property can return a UNO object
     flgObject = 2048  # 1st argument may be a Basic object
+    flgHardCode = 4096  # Force hardcoded call to method, avoid CallByName()
     # Basic class type
     moduleClass, moduleStandard = 2, 1
     #
@@ -1652,16 +1653,16 @@ class SFDialogs:
             return container, library, dialogname, ScriptForge.componentcontext
 
         def Activate(self):
-            return self.ExecMethod(self.vbMethod, 'Activate')
+            return self.ExecMethod(self.vbMethod + self.flgHardCode, 
'Activate')
 
         def Controls(self, controlname = ''):
-            return self.ExecMethod(self.vbMethod + self.flgArrayRet, 
'Controls', controlname)
+            return self.ExecMethod(self.vbMethod + self.flgArrayRet + 
self.flgHardCode, 'Controls', controlname)
 
         def EndExecute(self, returnvalue):
-            return self.ExecMethod(self.vbMethod, 'EndExecute', returnvalue)
+            return self.ExecMethod(self.vbMethod + self.flgHardCode, 
'EndExecute', returnvalue)
 
         def Execute(self, modal = True):
-            return self.ExecMethod(self.vbMethod, 'Execute', modal)
+            return self.ExecMethod(self.vbMethod + self.flgHardCode, 
'Execute', modal)
 
         def GetTextsFromL10N(self, l10n):
             l10nobj = l10n.objectreference if isinstance(l10n, 
SFScriptForge.SF_L10N) else l10n
commit 9141b7b1a99117882f2129e4348b9bf0ad2b903a
Author:     Michael Stahl <[email protected]>
AuthorDate: Mon Aug 8 16:12:14 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:17 2022 +0200

    sw_fieldmarkhide: fix crash on exporting forum-mso-en-4034.docx to ODT
    
    The problem is that there's a field in a preceding paragraph that ends
    immediately before another field starts, and so the backwards iteration
    erroneously picks it up in ModelToViewHelper ctor.
    
    Change-Id: I6e65c04e0372377b3af48f1d80de287b6113e1c3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137986
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <[email protected]>
    (cherry picked from commit 4f62ae798cc1f9f7bc524e408fc7a370345b40a8)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138026
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/sw/source/core/txtnode/modeltoviewhelper.cxx 
b/sw/source/core/txtnode/modeltoviewhelper.cxx
index 1f35cd1ee614..8f0d5ccd7676 100644
--- a/sw/source/core/txtnode/modeltoviewhelper.cxx
+++ b/sw/source/core/txtnode/modeltoviewhelper.cxx
@@ -140,8 +140,16 @@ ModelToViewHelper::ModelToViewHelper(const SwTextNode 
&rNode,
             // skip it, must be handled in loop below
             if (pFieldMark->GetMarkStart().nNode < rNode)
             {
-                SwPosition const sepPos(::sw::mark::FindFieldSep(*pFieldMark));
-                startedFields.emplace_front(pFieldMark, sepPos.nNode < rNode);
+                // this can be a nested field's end - skip over those!
+                if (pFieldMark->GetMarkEnd().nNode < rNode)
+                {
+                    
assert(cursor.GetPoint()->nNode.GetNode().GetTextNode()->GetText()[cursor.GetPoint()->nContent.GetIndex()]
 == CH_TXT_ATR_FIELDEND);
+                }
+                else
+                {
+                    SwPosition const 
sepPos(::sw::mark::FindFieldSep(*pFieldMark));
+                    startedFields.emplace_front(pFieldMark, sepPos.nNode < 
rNode);
+                }
                 *cursor.GetPoint() = pFieldMark->GetMarkStart();
             }
             if (!cursor.Move(fnMoveBackward, GoInContent))
commit d73ec5580e95a9ff4d74b3757d0dcd89b2fc866d
Author:     Caolán McNamara <[email protected]>
AuthorDate: Wed Aug 10 13:11:05 2022 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:17 2022 +0200

    gtk3: silence 'invalid cast from 'GtkWindow' to 'GtkMenuShell' warning
    
    from the sidebar tab due to the accelerators in there
    
    its a bogus check in gtk3 in this case of a menu attached to a MenuButton
    
    Change-Id: Ie5216e749993f3d44bfc2e4560cd3b2f49aa8aec
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138114
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins

diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 965dbad3d9a6..6b97261e7e89 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -22496,16 +22496,44 @@ bool IsAllowedBuiltInIcon(std::u16string_view 
iconName)
 
 namespace {
 
+#if !GTK_CHECK_VERSION(4, 0, 0)
+void silence_gwarning(const gchar* /*log_domain*/,
+                      GLogLevelFlags /*log_level*/,
+                      const gchar* /*message*/,
+                      gpointer /*user_data*/)
+{
+}
+#endif
+
 void load_ui_file(GtkBuilder* pBuilder, const OUString& rUri)
 {
 #if GTK_CHECK_VERSION(4, 0, 0)
     builder_add_from_gtk3_file(pBuilder, rUri);
 #else
+    guint nLogHandlerId = 0;
+    GLogLevelFlags 
nFatalMask(static_cast<GLogLevelFlags>(G_LOG_FLAG_RECURSION|G_LOG_LEVEL_ERROR));
+    if (rUri.endsWith("sfx/ui/tabbarcontents.ui"))
+    {
+        // gtk unhelpfully has a bogus warning for the accelerator in this .ui 
because it assumes menus with accelerators
+        // if attached to something are attached to a MenuShell, but it's a 
MenuButton in this case. Turn off warnings, and
+        // in the case of fatal-warnings temp disable fatal warnings, for this 
case.
+        nLogHandlerId = g_log_set_handler("GLib-GObject",
+                                          
static_cast<GLogLevelFlags>(G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | 
G_LOG_FLAG_RECURSION),
+                                          silence_gwarning, nullptr);
+        nFatalMask = g_log_set_always_fatal(nFatalMask);
+    }
+
     OUString aPath;
     osl::FileBase::getSystemPathFromFileURL(rUri, aPath);
     GError *err = nullptr;
     auto rc = gtk_builder_add_from_file(pBuilder, OUStringToOString(aPath, 
RTL_TEXTENCODING_UTF8).getStr(), &err);
 
+    if (nLogHandlerId)
+    {
+        g_log_remove_handler("GLib-GObject", nLogHandlerId);
+        g_log_set_always_fatal(nFatalMask);
+    }
+
     if (!rc)
     {
         SAL_WARN( "vcl.gtk", "GtkInstanceBuilder: error when calling 
gtk_builder_add_from_file: " << err->message);
commit 95c4b70e752939ab329d0ccfe0e1e93a0e425af3
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Aug 8 16:24:29 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:17 2022 +0200

    sd: avoid divide by zero in FuZoom::MouseMove
    
    See 
https://crashreport.libreoffice.org/stats/signature/sd::FuZoom::MouseMove(MouseEvent%20const%20&)
    
    Change-Id: I3b07def2ba088a92e2358e7db57c27c047165cef
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137988
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 2f5366f05bed04d805cfe469b2ea58b029167095)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137972

diff --git a/sd/source/ui/func/fuzoom.cxx b/sd/source/ui/func/fuzoom.cxx
index aa5395267183..871d594d3368 100644
--- a/sd/source/ui/func/fuzoom.cxx
+++ b/sd/source/ui/func/fuzoom.cxx
@@ -117,10 +117,14 @@ bool FuZoom::MouseMove(const MouseEvent& rMEvt)
             {
                 Size aWorkSize = mpView->GetWorkArea().GetSize();
                 Size aPageSize = 
mpView->GetSdrPageView()->GetPage()->GetSize();
-                aScroll.setX( aScroll.X() / ( aWorkSize.Width()  / 
aPageSize.Width()) );
-                aScroll.setY( aScroll.Y() / ( aWorkSize.Height() / 
aPageSize.Height()) );
-                mpViewShell->Scroll(aScroll.X(), aScroll.Y());
-                aBeginPosPix = aPosPix;
+                if (aWorkSize.Width() != 0 && aWorkSize.Height() != 0 &&
+                        aPageSize.Width() != 0 && aPageSize.Height() != 0)
+                {
+                    aScroll.setX( aScroll.X() / ( aWorkSize.Width()  / 
aPageSize.Width()) );
+                    aScroll.setY( aScroll.Y() / ( aWorkSize.Height() / 
aPageSize.Height()) );
+                    mpViewShell->Scroll(aScroll.X(), aScroll.Y());
+                    aBeginPosPix = aPosPix;
+                }
             }
         }
         else
commit 8b3de9a31931e869b08eecd3aa2d10537f551f35
Author:     Christian Lohmaier <[email protected]>
AuthorDate: Wed Aug 10 16:06:03 2022 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Sun Aug 28 14:00:16 2022 +0200

    update credits
    
    Change-Id: I70c537db5dbf921de0c8b3bebf7d241f9173b705
    (cherry picked from commit b099798085e7b883974928e06644a03ef98cea58)

diff --git a/readlicense_oo/license/CREDITS.fodt 
b/readlicense_oo/license/CREDITS.fodt
index 7c9b7449e0d5..0ec5b6ad16d3 100644
--- a/readlicense_oo/license/CREDITS.fodt
+++ b/readlicense_oo/license/CREDITS.fodt
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <office:document xmlns:officeooo="http://openoffice.org/2009/office"; 
xmlns:css3t="http://www.w3.org/TR/css3-text/"; 
xmlns:grddl="http://www.w3.org/2003/g/data-view#"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml"; 
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" 
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" 
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" 
xmlns:oooc="http://openoffice.org/2004/calc"; 
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" 
xmlns:ooow="http://openoffice.org/2004/writer"; 
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" 
xmlns:dc="http://purl.org/dc/elements/1.1/"; 
xmlns:rpt="http://openoffice.org/2005/report"; 
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" 
xmlns:config="urn:oasis:names:tc:opendocument:xmlns
 :config:1.0" xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" 
xmlns:ooo="http://openoffice.org/2004/office"; 
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" 
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" 
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" 
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" 
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" 
xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0"
 xmlns:tableooo="http://openoffice.org/2009/table"; 
xmlns:drawooo="http://openoffice.org/2010/draw"; 
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
 xmlns:dom="http://www.w3.org/2001/xml-events"; 
xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" 
xmlns:math="http://www.w3.org/1998/Math/MathML"; 
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="ur
 n:oasis:names:tc:opendocument:xmlns:script:1.0" 
xmlns:xforms="http://www.w3.org/2002/xforms"; office:version="1.3" 
office:mimetype="application/vnd.oasis.opendocument.text">
- <office:meta><dc:title>Credits » 
LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits
 for the LibreOffice 
development/coding.</dc:description><meta:generator>LibreOffice/7.3.3.2$Linux_X86_64
 
LibreOffice_project/d1d0ea68f081ee2800a922cac8f79445e4603348</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic
 meta:table-count="5" meta:image-count="1" meta:object-count="0" 
meta:page-count="2" meta:paragraph-count="4583" meta:word-count="16992" 
meta:character-count="122698" 
meta:non-whitespace-character-count="107555"/><meta:user-defined 
meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
+ <office:meta><dc:title>Credits » 
LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits
 for the LibreOffice 
development/coding.</dc:description><meta:generator>LibreOffice/7.3.5.2$Linux_X86_64
 
LibreOffice_project/184fe81b8c8c30d8b5082578aee2fed2ea847c01</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic
 meta:table-count="5" meta:image-count="1" meta:object-count="0" 
meta:page-count="2" meta:paragraph-count="4592" meta:word-count="17024" 
meta:character-count="122958" 
meta:non-whitespace-character-count="107787"/><meta:user-defined 
meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
  <office:settings>
   <config:config-item-set config:name="ooo:view-settings">
-   <config:config-item config:name="ViewAreaTop" 
config:type="long">808</config:config-item>
+   <config:config-item config:name="ViewAreaTop" 
config:type="long">2152</config:config-item>
    <config:config-item config:name="ViewAreaLeft" 
config:type="long">501</config:config-item>
    <config:config-item config:name="ViewAreaWidth" 
config:type="long">32175</config:config-item>
    <config:config-item config:name="ViewAreaHeight" 
config:type="long">28180</config:config-item>
@@ -16,9 +16,9 @@
      <config:config-item config:name="ViewLeft" 
config:type="long">3649</config:config-item>
      <config:config-item config:name="ViewTop" 
config:type="long">3434</config:config-item>
      <config:config-item config:name="VisibleLeft" 
config:type="long">501</config:config-item>
-     <config:config-item config:name="VisibleTop" 
config:type="long">808</config:config-item>
+     <config:config-item config:name="VisibleTop" 
config:type="long">2152</config:config-item>
      <config:config-item config:name="VisibleRight" 
config:type="long">32674</config:config-item>
-     <config:config-item config:name="VisibleBottom" 
config:type="long">28986</config:config-item>
+     <config:config-item config:name="VisibleBottom" 
config:type="long">30330</config:config-item>
      <config:config-item config:name="ZoomType" 
config:type="short">0</config:config-item>
      <config:config-item config:name="ViewLayoutColumns" 
config:type="short">0</config:config-item>
      <config:config-item config:name="ViewLayoutBookMode" 
config:type="boolean">false</config:config-item>
@@ -97,7 +97,7 @@
    </config:config-item-map-indexed>
    <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
    <config:config-item config:name="AddParaTableSpacingAtStart" 
config:type="boolean">true</config:config-item>
-   <config:config-item config:name="Rsid" 
config:type="int">11044056</config:config-item>
+   <config:config-item config:name="Rsid" 
config:type="int">11114413</config:config-item>
    <config:config-item config:name="EmbeddedDatabaseName" 
config:type="string"/>
    <config:config-item config:name="FieldAutoUpdate" 
config:type="boolean">true</config:config-item>
    <config:config-item config:name="OutlineLevelYieldsNumbering" 
config:type="boolean">false</config:config-item>
@@ -166,7 +166,7 @@
  <office:styles>
   <style:default-style style:family="graphic">
    <style:graphic-properties svg:stroke-color="#3465a4" 
draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" 
draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" 
draw:start-line-spacing-vertical="0.283cm" 
draw:end-line-spacing-horizontal="0.283cm" 
draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="true"/>
-   <style:paragraph-properties style:text-autospace="ideograph-alpha" 
style:line-break="strict" style:writing-mode="lr-tb" 
style:font-independent-line-spacing="false">
+   <style:paragraph-properties style:text-autospace="ideograph-alpha" 
style:line-break="strict" style:font-independent-line-spacing="false">
     <style:tab-stops/>
    </style:paragraph-properties>
    <style:text-properties style:use-window-font-color="true" 
loext:opacity="0%" style:font-name="Thorndale AMT" fo:font-size="12pt" 
fo:language="hu" fo:country="HU" style:letter-kerning="true" 
style:font-name-asian="SimSun" style:font-size-asian="12pt" 
style:language-asian="zh" style:country-asian="CN" 
style:font-name-complex="Mangal1" style:font-size-complex="12pt" 
style:language-complex="hi" style:country-complex="IN"/>
@@ -350,13 +350,10 @@
    <style:table-column-properties style:column-width="6.775cm"/>
   </style:style>
   <style:style style:name="Tabelle1.B" style:family="table-column">
-   <style:table-column-properties style:column-width="6.749cm"/>
-  </style:style>
-  <style:style style:name="Tabelle1.C" style:family="table-column">
    <style:table-column-properties style:column-width="6.219cm"/>
   </style:style>
-  <style:style style:name="Tabelle1.D" style:family="table-column">
-   <style:table-column-properties style:column-width="6.907cm"/>
+  <style:style style:name="Tabelle1.C" style:family="table-column">
+   <style:table-column-properties style:column-width="6.828cm"/>
   </style:style>
   <style:style style:name="Tabelle1.A1" style:family="table-cell">
    <style:table-cell-properties style:vertical-align="middle" 
fo:padding="0.049cm" fo:border="none"/>
@@ -422,21 +419,21 @@
    <style:table-properties style:width="31.752cm" table:align="left"/>
   </style:style>
   <style:style style:name="Tabelle5.A" style:family="table-column">
-   <style:table-column-properties style:column-width="7.953cm"/>
+   <style:table-column-properties style:column-width="11.659cm"/>
   </style:style>
   <style:style style:name="Tabelle5.B" style:family="table-column">
-   <style:table-column-properties style:column-width="10.754cm"/>
+   <style:table-column-properties style:column-width="6.731cm"/>
   </style:style>
   <style:style style:name="Tabelle5.C" style:family="table-column">
-   <style:table-column-properties style:column-width="6.56cm"/>
+   <style:table-column-properties style:column-width="6.641cm"/>
   </style:style>
   <style:style style:name="Tabelle5.D" style:family="table-column">
-   <style:table-column-properties style:column-width="6.484cm"/>
+   <style:table-column-properties style:column-width="6.72cm"/>
   </style:style>
   <style:style style:name="Tabelle5.A1" style:family="table-cell">
    <style:table-cell-properties style:vertical-align="middle" 
fo:padding="0.049cm" fo:border="none"/>
   </style:style>
-  <style:style style:name="Tabelle5.C690" style:family="table-cell">
+  <style:style style:name="Tabelle5.D691" style:family="table-cell">
    <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/>
   </style:style>
   <style:style style:name="P1" style:family="paragraph" 
style:parent-style-name="Table_20_Contents">
@@ -1078,20 +1075,19 @@
    </draw:frame>
    <text:section text:style-name="Sect1" text:name="BgContainer">
     <text:p text:style-name="P16">Credits</text:p>
-    <text:p text:style-name="Text_20_body">1774 individuals contributed to 
OpenOffice.org (and whose contributions were imported into LibreOffice) or 
LibreOffice until 2022-07-15 20:07:46.</text:p>
+    <text:p text:style-name="Text_20_body">1778 individuals contributed to 
OpenOffice.org (and whose contributions were imported into LibreOffice) or 
LibreOffice until 2022-08-09 12:12:09.</text:p>
     <text:p text:style-name="Text_20_body"><text:span 
text:style-name="T1">*</text:span> marks developers whose first contributions 
happened after 2010-09-28.</text:p>
     <text:h text:style-name="Heading_20_2" text:outline-level="2">Developers 
committing code since 2010-09-28</text:h>
     <table:table table:name="Tabelle1" table:style-name="Tabelle1">
      <table:table-column table:style-name="Tabelle1.A"/>
      <table:table-column table:style-name="Tabelle1.B"/>
-     <table:table-column table:style-name="Tabelle1.C"/>
-     <table:table-column table:style-name="Tabelle1.D"/>
-     <table:table-row table:style-name="TableLine144507568">
+     <table:table-column table:style-name="Tabelle1.C" 
table:number-columns-repeated="2"/>
+     <table:table-row table:style-name="TableLine115629056">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Ruediger 
Timm<text:line-break/>Commits: 82464<text:line-break/>Joined: 
2000-10-10</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Caolán 
McNamara<text:line-break/>Commits: 33138<text:line-break/>Joined: 
2000-10-10</text:p>
+       <text:p text:style-name="Table_20_Contents">Caolán 
McNamara<text:line-break/>Commits: 33245<text:line-break/>Joined: 
2000-10-10</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Kurt 
Zenker<text:line-break/>Commits: 31752<text:line-break/>Joined: 
2000-09-25</text:p>
@@ -1100,7 +1096,7 @@
        <text:p text:style-name="Table_20_Contents">Oliver 
Bolte<text:line-break/>Commits: 31008<text:line-break/>Joined: 
2000-09-19</text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine144507568">
+     <table:table-row table:style-name="TableLine115629056">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Jens-Heiner Rechtien 
[hr]<text:line-break/>Commits: 28805<text:line-break/>Joined: 
2000-09-18</text:p>
       </table:table-cell>
@@ -1108,27 +1104,27 @@
        <text:p text:style-name="Table_20_Contents">Vladimir 
Glazunov<text:line-break/>Commits: 25434<text:line-break/>Joined: 
2000-12-04</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Stephan 
Bergmann<text:line-break/>Commits: 19937<text:line-break/>Joined: 
2000-10-04</text:p>
+       <text:p text:style-name="Table_20_Contents">Stephan 
Bergmann<text:line-break/>Commits: 19967<text:line-break/>Joined: 
2000-10-04</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 
16316<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-12-12</text:span></text:p>
+       <text:p text:style-name="Table_20_Contents"><text:span 
text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 
16436<text:line-break/>Joined: <text:span 
text:style-name="T2">2011-12-12</text:span></text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine144507568">
+     <table:table-row table:style-name="TableLine115629056">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Ivo 
Hinkelmann<text:line-break/>Commits: 9480<text:line-break/>Joined: 
2002-09-09</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Tor 
Lillqvist<text:line-break/>Commits: 9073<text:line-break/>Joined: 
2010-03-23</text:p>
+       <text:p text:style-name="Table_20_Contents">Tor 
Lillqvist<text:line-break/>Commits: 9074<text:line-break/>Joined: 
2010-03-23</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Miklos 
Vajna<text:line-break/>Commits: 9030<text:line-break/>Joined: 
2010-07-29</text:p>
+       <text:p text:style-name="Table_20_Contents">Miklos 
Vajna<text:line-break/>Commits: 9060<text:line-break/>Joined: 
2010-07-29</text:p>
       </table:table-cell>
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
-       <text:p text:style-name="Table_20_Contents">Michael 
Stahl<text:line-break/>Commits: 8002<text:line-break/>Joined: 
2008-06-16</text:p>
+       <text:p text:style-name="Table_20_Contents">Michael 
Stahl<text:line-break/>Commits: 8020<text:line-break/>Joined: 
2008-06-16</text:p>
       </table:table-cell>
      </table:table-row>
-     <table:table-row table:style-name="TableLine144507568">
+     <table:table-row table:style-name="TableLine115629056">
       <table:table-cell table:style-name="Tabelle1.A1" 
office:value-type="string">
        <text:p text:style-name="Table_20_Contents">Kohei 
Yoshida<text:line-break/>Commits: 5571<text:line-break/>Joined: 
2009-06-19</text:p>
       </table:table-cell>
@@ -1136,29 +1132,29 @@

... etc. - the rest is truncated

Reply via email to