download.lst                                               |    4 +-
 external/expat/expat-winapi.patch                          |    5 +-
 sal/osl/unx/uunxapi.cxx                                    |    3 +
 sc/qa/unit/data/ods/tdf170515_invalid_parameters.ods       |binary
 sc/qa/unit/subsequent_export_test2.cxx                     |   26 +++++++++++++
 sc/source/filter/excel/xestream.cxx                        |    5 ++
 sc/source/filter/excel/xetable.cxx                         |    4 +-
 sc/source/filter/excel/xltools.cxx                         |   10 +++++
 sc/source/filter/inc/xestream.hxx                          |    3 +
 sc/source/filter/inc/xltools.hxx                           |    2 +
 sw/qa/extras/ooxmlexport/data/redline-range-comment.docx   |binary
 sw/qa/extras/ooxmlexport/ooxmlexport25.cxx                 |   17 ++++++++
 sw/qa/writerfilter/dmapper/DomainMapper_Impl.cxx           |   23 +++++++++++
 sw/qa/writerfilter/dmapper/data/redline-range-comment.docx |binary
 sw/source/filter/ww8/docxattributeoutput.cxx               |   13 ++++++
 sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx       |    2 -
 wizards/source/scriptforge/SF_String.xba                   |    4 +-
 17 files changed, 109 insertions(+), 12 deletions(-)

New commits:
commit 86b31e4e03df389abff0019d93907943b42dc241
Author:     Christian Lohmaier <[email protected]>
AuthorDate: Mon Feb 2 15:14:31 2026 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Wed Feb 4 10:57:46 2026 +0100

    uunxapi.cxx: add pre/postmac headers for sandboxed build
    
    side-effect of dec1441f716c7631622b9b3e32fdbc666502c006 that removed
    unnecessary Carbon.h headers and along with that the premac one that
    would have been applied also to sal/osl/unx/uunxapi.cxx
    
    Change-Id: I058e074d3ba7fb42d1ca70e497c6219820597119
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198551
    Tested-by: Jenkins
    Reviewed-by: Christian Lohmaier <[email protected]>
    (cherry picked from commit ab214fc9f3cd0c69756dbbdf181b3da93069d7e2)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198559

diff --git a/sal/osl/unx/uunxapi.cxx b/sal/osl/unx/uunxapi.cxx
index 37db3c987315..6af6fbb61a4d 100644
--- a/sal/osl/unx/uunxapi.cxx
+++ b/sal/osl/unx/uunxapi.cxx
@@ -47,7 +47,10 @@ OString osl::OUStringToOString(std::u16string_view s)
 
 #if HAVE_FEATURE_MACOSX_SANDBOX
 
+#include <premac.h>
 #include <Foundation/Foundation.h>
+#include <postmac.h>
+
 #include <Security/Security.h>
 #include <mach-o/dyld.h>
 
commit fc6f353a0669032042487cd242742b6562ff0aaf
Author:     Aron Budea <[email protected]>
AuthorDate: Fri Jan 30 14:47:44 2026 +1030
Commit:     Andras Timar <[email protected]>
CommitDate: Wed Feb 4 10:57:45 2026 +0100

    tdf#170515 sc: formula with invalid parameters saved into XLSX
    
    Calc/ODS is more forgiving about accepting input, the bugdoc
    had this: =COUNTIF(BASE(1;14);"vv")
    Here the first parameter of COUNTIF isn't valid, Excel
    doesn't even allow entering it, and fails opening the XLSX
    with such formula.
    
    No problem in Calc, formula simply gives Err:504 result.
    
    Fix: don't export formula with Err:504 (IllegalParameter
    error) result to XLSX.
    
    Change-Id: Ic453440f385b665e56488a61a7c80bf458c4effd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198391
    Tested-by: Jenkins
    Reviewed-by: Aron Budea <[email protected]>
    (cherry picked from commit bebe7a0b270506b4d1a32bd99740865fbfbea3a3)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198518
    Reviewed-by: Adolfo Jayme Barrientos <[email protected]>

diff --git a/sc/qa/unit/data/ods/tdf170515_invalid_parameters.ods 
b/sc/qa/unit/data/ods/tdf170515_invalid_parameters.ods
new file mode 100644
index 000000000000..35ac902111e6
Binary files /dev/null and 
b/sc/qa/unit/data/ods/tdf170515_invalid_parameters.ods differ
diff --git a/sc/qa/unit/subsequent_export_test2.cxx 
b/sc/qa/unit/subsequent_export_test2.cxx
index 9c6400375cd9..e2d2bdfeab50 100644
--- a/sc/qa/unit/subsequent_export_test2.cxx
+++ b/sc/qa/unit/subsequent_export_test2.cxx
@@ -1566,6 +1566,32 @@ CPPUNIT_TEST_FIXTURE(ScExportTest2, testTdf137543XLSX)
         u"_xlfn.LET(_xlpm.first,B5:E15,_xlfn.CHOOSEROWS(_xlpm.first, 1, 3, 5, 
7, 9, 11))");
 }
 
+CPPUNIT_TEST_FIXTURE(ScExportTest2, testTdf170515_invalid_parameters)
+{
+    createScDoc("ods/tdf170515_invalid_parameters.ods");
+
+    save(TestFilter::XLSX);
+    xmlDocUniquePtr pSheet = parseExport(u"xl/worksheets/sheet1.xml"_ustr);
+    CPPUNIT_ASSERT(pSheet);
+
+    // No function must be saved into the XLSX, the parameters are invalid 
(Err:504 in Calc),
+    // and Excel fails to open the result
+    // Function with invalid parameter: =COUNTIF(BASE(1;14);"VV")
+    CPPUNIT_ASSERT_EQUAL(0,
+                         countXPathNodes(pSheet, 
"/x:worksheet/x:sheetData/x:row[1]/x:c[1]/x:f"));
+    // Function with invalid parameter: =COUNTIF("hello";"VV")
+    CPPUNIT_ASSERT_EQUAL(0,
+                         countXPathNodes(pSheet, 
"/x:worksheet/x:sheetData/x:row[2]/x:c[1]/x:f"));
+    // Function with invalid parameter: =COUNTIF(1;"VV")
+    CPPUNIT_ASSERT_EQUAL(0,
+                         countXPathNodes(pSheet, 
"/x:worksheet/x:sheetData/x:row[3]/x:c[1]/x:f"));
+    // Function with invalid parameter: =COUNTIF(TEXT(1;"#");"VV")
+    CPPUNIT_ASSERT_EQUAL(0,
+                         countXPathNodes(pSheet, 
"/x:worksheet/x:sheetData/x:row[4]/x:c[1]/x:f"));
+    // Just check one of them that it has the right text
+    assertXPathContent(pSheet, "/x:worksheet/x:sheetData/x:row[1]/x:c[1]/x:v", 
u"#VALUE!");
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/filter/excel/xestream.cxx 
b/sc/source/filter/excel/xestream.cxx
index d1650cfc1c41..1b0274f09dbc 100644
--- a/sc/source/filter/excel/xestream.cxx
+++ b/sc/source/filter/excel/xestream.cxx
@@ -665,7 +665,8 @@ static const char* lcl_GetErrorString( FormulaError 
nScErrCode )
     }
 }
 
-void XclXmlUtils::GetFormulaTypeAndValue( ScFormulaCell& rCell, const char*& 
rsType, OUString& rsValue )
+void XclXmlUtils::GetFormulaTypeAndValue( ScFormulaCell& rCell, const char*& 
rsType,
+                                          OUString& rsValue, bool* 
pbWriteFormula )
 {
     sc::FormulaResultValue aResValue = rCell.GetResult();
 
@@ -674,6 +675,8 @@ void XclXmlUtils::GetFormulaTypeAndValue( ScFormulaCell& 
rCell, const char*& rsT
         case sc::FormulaResultValue::Error:
             rsType = "e";
             rsValue = ToOUString(lcl_GetErrorString(aResValue.mnError));
+            if ( pbWriteFormula )
+                *pbWriteFormula = 
XclTools::IsFormulaWithErrorValid(aResValue.mnError);
         break;
         case sc::FormulaResultValue::Value:
             rsType = rCell.GetFormatType() == SvNumFormatType::LOGICAL
diff --git a/sc/source/filter/excel/xetable.cxx 
b/sc/source/filter/excel/xetable.cxx
index e28f6b6e657f..680a390f3ca5 100644
--- a/sc/source/filter/excel/xetable.cxx
+++ b/sc/source/filter/excel/xetable.cxx
@@ -943,7 +943,8 @@ void XclExpFormulaCell::SaveXml( XclExpXmlStream& rStrm )
 {
     const char* sType = nullptr;
     OUString    sValue;
-    XclXmlUtils::GetFormulaTypeAndValue( mrScFmlaCell, sType, sValue );
+    bool bWriteFormula = true;
+    XclXmlUtils::GetFormulaTypeAndValue( mrScFmlaCell, sType, sValue, 
&bWriteFormula );
     sax_fastparser::FSHelperPtr& rWorksheet = rStrm.GetCurrentStream();
     rWorksheet->startElement( XML_c,
             XML_r, XclXmlUtils::ToOString(rStrm.GetRoot().GetStringBuf(), 
GetXclPos()).getStr(),
@@ -952,7 +953,6 @@ void XclExpFormulaCell::SaveXml( XclExpXmlStream& rStrm )
             // OOXTODO: XML_cm, XML_vm, XML_ph
     );
 
-    bool bWriteFormula = true;
     bool bTagStarted = false;
     ScAddress aScPos( static_cast< SCCOL >( GetXclPos().mnCol ),
             static_cast< SCROW >( GetXclPos().mnRow ), 
rStrm.GetRoot().GetCurrScTab() );
diff --git a/sc/source/filter/excel/xltools.cxx 
b/sc/source/filter/excel/xltools.cxx
index c6ecb31ed6d5..84e637e034c8 100644
--- a/sc/source/filter/excel/xltools.cxx
+++ b/sc/source/filter/excel/xltools.cxx
@@ -218,6 +218,16 @@ sal_uInt8 XclTools::GetXclErrorCode( FormulaError nScError 
)
     return EXC_ERR_NA;
 }
 
+bool XclTools::IsFormulaWithErrorValid( FormulaError nScError )
+{
+    switch ( nScError )
+    {
+        // illegal parameter, eg. COUNTIF(1, "x")
+        case FormulaError::IllegalParameter:       return false;
+        default:                                   return true;
+    }
+}
+
 FormulaError XclTools::GetScErrorCode( sal_uInt8 nXclError )
 {
     switch( nXclError )
diff --git a/sc/source/filter/inc/xestream.hxx 
b/sc/source/filter/inc/xestream.hxx
index 4da0e0b6067a..15082cc7abc8 100644
--- a/sc/source/filter/inc/xestream.hxx
+++ b/sc/source/filter/inc/xestream.hxx
@@ -251,7 +251,8 @@ public:
     XclXmlUtils(const XclXmlUtils&) = delete;
     XclXmlUtils& operator=(const XclXmlUtils&) = delete;
 
-    static void                     GetFormulaTypeAndValue( ScFormulaCell& 
rCell, const char*& sType, OUString& rValue);
+    static void GetFormulaTypeAndValue( ScFormulaCell& rCell, const char*& 
sType, OUString& rValue,
+                                       bool* pbWriteFormula = nullptr );
     static OUString          GetStreamName( const char* sStreamDir, const 
char* sStream, sal_Int32 nId );
 
     static OString ToOString( const Color& rColor );
diff --git a/sc/source/filter/inc/xltools.hxx b/sc/source/filter/inc/xltools.hxx
index f67d896af949..057b1a684864 100644
--- a/sc/source/filter/inc/xltools.hxx
+++ b/sc/source/filter/inc/xltools.hxx
@@ -119,6 +119,8 @@ public:
 
     /** Converts a Calc error code to an Excel error code. */
     static sal_uInt8    GetXclErrorCode( FormulaError nScError );
+    /** Checks if erroneous formula is valid (file can be opened) in Excel */
+    static bool         IsFormulaWithErrorValid( FormulaError nScError );
     /** Converts an Excel error code to a Calc error code. */
     static FormulaError GetScErrorCode( sal_uInt8 nXclError );
 
commit f71f658d2e587d74803b9f4428989540fa56357f
Author:     Jean-Pierre Ledure <[email protected]>
AuthorDate: Mon Feb 2 15:29:18 2026 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Wed Feb 4 10:57:45 2026 +0100

    ScriptForge fix tdf#169176 comma in file names
    
    Per
      
https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#file-and-directory-names
    the comma and the semicolon are not
    reserved characters in folder or file
    names.
    
    Not in Windows, and also not in Linux.
    
    The regular expressions used to filter
    valid file names have been reviewed
    accordingly in the
      ScriptForge.SF_String
    module.
    
    No impact on user scripts, except a better
    tolerance.
    No impact on user documentation.
    
    Change-Id: I2c4bd442764e0362e1ca6f44603311b0b7ca7679
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198552
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <[email protected]>

diff --git a/wizards/source/scriptforge/SF_String.xba 
b/wizards/source/scriptforge/SF_String.xba
index 01205534fcb9..3342d1427aaa 100644
--- a/wizards/source/scriptforge/SF_String.xba
+++ b/wizards/source/scriptforge/SF_String.xba
@@ -60,8 +60,8 @@ Const REGEXTIMEMIN                    =       
&quot;([0-5][0-9])&quot;
 Const REGEXTIMESEC                     =       REGEXTIMEMIN
 Const REGEXDIGITS                      =       &quot;^[0-9]+$&quot;
 Const REGEXEMAIL                       =       
&quot;^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$&quot;
-Const REGEXFILELINUX           =       
&quot;^[^&lt;&gt;:;,?&quot;&quot;*|\]+$&quot;
-Const REGEXFILEWIN                     =       
&quot;^([A-Z]|[a-z]:)?[^&lt;&gt;:;,?&quot;&quot;*|]+$&quot;
+Const REGEXFILELINUX           =       
&quot;^[^&lt;&gt;:?&quot;&quot;*|\]+$&quot;
+Const REGEXFILEWIN                     =       
&quot;^([A-Z]|[a-z]:)?[^&lt;&gt;:?&quot;&quot;*|]+$&quot;
 Const REGEXHEXA                                =       
&quot;^(0X|&amp;H)?[0-9A-F]+$&quot;     &apos;  Includes 0xFF and &amp;HFF
 Const REGEXIPV4                                =       
&quot;^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$&quot;
 Const REGEXNUMBER                      =       
&quot;^[-+]?(([0-9]+)?\.)?[0-9]+([eE][-+]?[0-9]+)?$&quot;
commit 6a35463c5459bd98791d89e68cedcc8692683528
Author:     Miklos Vajna <[email protected]>
AuthorDate: Thu Jan 29 08:37:37 2026 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Wed Feb 4 10:57:45 2026 +0100

    cool#13988 DOCX export: fix missing delete flag on deleted comments with 
ranges
    
    Load the bugdoc, see that the comment is marked as deleted (is anchored
    inside a delete redline), save, reload, the comment is no longer
    deleted.
    
    This is because we write redline start/end around DOCX "runs", and the
    comment reference dummy character is one such dummy run. So unless
    explicit redline markup is written, comments (their comment reference)
    is not inside a redline.
    
    Fix this by checking if we'll write comment references (part of comment
    end) in DocxAttributeOutput::EndRun(). If we're inside a delete, write
    the delete redline markup around the comment reference, too.
    
    Doing the same for inserts would make sense, but then first we would
    need to tweak Writer's UI to insert new comments outside redlines,
    otherwise UITest_writer_tests7's
    tdf90401.tdf90401.test_tdf142902_remove_personal_info_in_DOCX would
    break.
    
    Change-Id: I8d6db05c8a9fd1d5e1e619843967e3f21fb43e59
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198353
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <[email protected]>
    (cherry picked from commit a72506da82d2e0334e23a8c3c1cd07282fdd7ca3)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198364
    Reviewed-by: Adolfo Jayme Barrientos <[email protected]>

diff --git a/sw/qa/extras/ooxmlexport/data/redline-range-comment.docx 
b/sw/qa/extras/ooxmlexport/data/redline-range-comment.docx
new file mode 100644
index 000000000000..1110971401f5
Binary files /dev/null and 
b/sw/qa/extras/ooxmlexport/data/redline-range-comment.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport25.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport25.cxx
index 319ced5eba2c..9a2bf41b986a 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport25.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport25.cxx
@@ -290,6 +290,23 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf167082)
     CPPUNIT_ASSERT_EQUAL(OUString("Heading 1"), aStyleName);
 }
 
+CPPUNIT_TEST_FIXTURE(Test, testRangeCommentInDeleteDocxExport)
+{
+    // Given a document with a comment that is inside a delete redline:
+    createSwDoc("redline-range-comment.docx");
+
+    // When exporting that to DOCX:
+    save(TestFilter::DOCX);
+
+    // Then make sure that the comment reference is inside the delete redline:
+    xmlDocUniquePtr pXmlDoc = parseExport(u"word/document.xml"_ustr);
+    // Without the accompanying fix in place, this test would have failed with:
+    // - Expected: 1
+    // - Actual  : 0
+    // i.e. the comment anchor was outside the redline.
+    CPPUNIT_ASSERT_EQUAL(1, countXPathNodes(pXmlDoc, 
"//w:del/w:r/w:commentReference"));
+}
+
 CPPUNIT_TEST_FIXTURE(Test, testFloatingTableAnchorPosExport)
 {
     // Given a document with two floating tables after each other:
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx 
b/sw/source/filter/ww8/docxattributeoutput.cxx
index b349f53fa821..16dc68ccf6b0 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -2003,7 +2003,20 @@ void DocxAttributeOutput::EndRun(const SwTextNode* 
pNode, sal_Int32 nPos, sal_In
     DoWriteBookmarksStart(m_rBookmarksStart, m_pMoveRedlineData);
     DoWriteBookmarksEnd(m_rBookmarksEnd, false, false); // Write non-moverange 
bookmarks
     DoWritePermissionsStart();
+
+    // Surround annotation references with redline start/end markup if we're 
inside a delete.
+    bool bHasAnnotationMarkReferencesInDel = !m_rAnnotationMarksEnd.empty() && 
m_pRedlineData
+                                             && m_pRedlineData->GetType() == 
RedlineType::Delete;
+    if (bHasAnnotationMarkReferencesInDel)
+    {
+        StartRedline(m_pRedlineData, bLastRun);
+    }
     DoWriteAnnotationMarks();
+    if (bHasAnnotationMarkReferencesInDel)
+    {
+        EndRedline(m_pRedlineData, bLastRun);
+    }
+
     // if there is some redlining in the document, output it
     bool bSkipRedline = false;
     if (nLen == 1)
commit 5661048acf7174aa5d66939d2fe1fa6c611b117b
Author:     Miklos Vajna <[email protected]>
AuthorDate: Fri Jan 23 09:31:05 2026 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Wed Feb 4 10:57:45 2026 +0100

    cool#13988 DOCX import: fix missing delete flag on deleted comments with 
ranges
    
    The bugdoc has commented text range inside a deletion. The import result
    doesn't mark the comment as deleted.
    
    Comments with a single anchor point work fine, since commit
    419b70b5d4db227509614bdea5b4b89bcf7a6032 (tdf#105485 DOCX: import
    deleted comments as deleted, 2019-08-26).
    
    Fix the problem by invoking CheckRedline() in
    DomainMapper_Impl::PopAnnotation() in the range case as well, that
    correctly creates the delete redline for the comment anchor.
    
    This is shared code for any redlines, so fixes inserts, too.
    
    Change-Id: I620e1419cee79ab729ea7be248f1ad079a9fc536
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198125
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Jenkins
    (cherry picked from commit 5d101c9919c7c0798df092bd31b828d0a144abba)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198145
    Reviewed-by: Adolfo Jayme Barrientos <[email protected]>

diff --git a/sw/qa/writerfilter/dmapper/DomainMapper_Impl.cxx 
b/sw/qa/writerfilter/dmapper/DomainMapper_Impl.cxx
index a98f682ab6c4..9349fae282ef 100644
--- a/sw/qa/writerfilter/dmapper/DomainMapper_Impl.cxx
+++ b/sw/qa/writerfilter/dmapper/DomainMapper_Impl.cxx
@@ -29,6 +29,8 @@
 #include <ndtxt.hxx>
 #include <swtable.hxx>
 #include <txatbase.hxx>
+#include <wrtsh.hxx>
+#include <IDocumentRedlineAccess.hxx>
 
 using namespace ::com::sun::star;
 
@@ -532,6 +534,27 @@ CPPUNIT_TEST_FIXTURE(Test, testFieldCharHeightHeaderToC)
         = rAutoFormat.GetStyleHandle()->Get(RES_CHRATR_FONTSIZE);
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt32>(480), 
rFontHeightItem.GetHeight());
 }
+
+CPPUNIT_TEST_FIXTURE(Test, testAnnotationMarkRedline)
+{
+    // Given a document with a commented text range, inside a redline:
+    // When importing that document:
+    createSwDoc("redline-range-comment.docx");
+
+    // Then make sure the comment anchor is inside a redline:
+    SwDocShell* pDocShell = getSwDocShell();
+    SwWrtShell* pWrtShell = pDocShell->GetWrtShell();
+    pWrtShell->SttEndDoc(/*bStt=*/true);
+    pWrtShell->Right(SwCursorSkipMode::Chars, /*bSelect=*/false, 7, 
/*bBasicCall=*/false);
+    SwPaM* pCursor = pWrtShell->GetCursor();
+    SwField* pField = SwCursorShell::GetFieldAtCursor(pCursor, true);
+    CPPUNIT_ASSERT_EQUAL(SwFieldIds::Postit, pField->Which());
+    const IDocumentRedlineAccess& rIDRA = 
pDocShell->GetDoc()->getIDocumentRedlineAccess();
+    const SwRangeRedline* pRedline = rIDRA.GetRedline(*pCursor->Start(), 
nullptr);
+    // Without the accompanying fix in place, this test would have failed, the 
anchor point was not
+    // inside a redline.
+    CPPUNIT_ASSERT(pRedline);
+}
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/qa/writerfilter/dmapper/data/redline-range-comment.docx 
b/sw/qa/writerfilter/dmapper/data/redline-range-comment.docx
new file mode 100644
index 000000000000..1110971401f5
Binary files /dev/null and 
b/sw/qa/writerfilter/dmapper/data/redline-range-comment.docx differ
diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx 
b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
index 0499b42776f1..69a7d810488a 100644
--- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
+++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx
@@ -4793,7 +4793,6 @@ void DomainMapper_Impl::PopAnnotation()
         {
             uno::Sequence< beans::PropertyValue > aEmptyProperties;
             appendTextContent( m_xAnnotationField, aEmptyProperties );
-            CheckRedline( m_xAnnotationField->getAnchor( ) );
         }
         else
         {
@@ -4855,6 +4854,7 @@ void DomainMapper_Impl::PopAnnotation()
                 xCursor->setString(OUString());
             }
         }
+        CheckRedline(m_xAnnotationField->getAnchor());
         m_aAnnotationPositions.erase( m_nAnnotationId );
     }
     catch (uno::Exception const&)
commit ddea1db48331e15c7ec4b4027f4e142fce15c717
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Feb 2 10:28:30 2026 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Wed Feb 4 10:57:45 2026 +0100

    expat: upgrade to 2.7.4
    
    Downloaded from 
https://github.com/libexpat/libexpat/releases/download/R_2_7_4/expat-2.7.4.tar.xz
    
    Change-Id: I7058df85bf0fbac6608b83967b635382859e4db6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198521
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 79631c2369df3dcd858abd725bb1c7fd1459652b)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198531
    Reviewed-by: Adolfo Jayme Barrientos <[email protected]>

diff --git a/download.lst b/download.lst
index c0b238734f3b..0f035d0227d9 100644
--- a/download.lst
+++ b/download.lst
@@ -111,8 +111,8 @@ ETONYEK_TARBALL := 
libetonyek-0.1.$(ETONYEK_VERSION_MICRO).tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-EXPAT_SHA256SUM := 
71df8f40706a7bb0a80a5367079ea75d91da4f8c65c58ec59bcdfbf7decdab9f
-EXPAT_TARBALL := expat-2.7.3.tar.xz
+EXPAT_SHA256SUM := 
9e9cabb457c1e09de91db2706d8365645792638eb3be1f94dbb2149301086ac0
+EXPAT_TARBALL := expat-2.7.4.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/expat/expat-winapi.patch 
b/external/expat/expat-winapi.patch
index 5cef970a2bf2..8abe65ae7cf1 100644
--- a/external/expat/expat-winapi.patch
+++ b/external/expat/expat-winapi.patch
@@ -1,11 +1,10 @@
 --- misc/expat-2.5.0/lib/expat_external.h      2022-10-25 01:32:54.000000000 
+0900
 +++ misc/build/expat-2.5.0/lib/expat_external.h        2022-10-30 
23:09:47.339459134 +0900
-@@ -88,11 +88,6 @@
+@@ -88,10 +88,6 @@
  #    ifndef XML_BUILDING_EXPAT
  /* using Expat from an application */
  
--#      if defined(_MSC_EXTENSIONS) && ! defined(__BEOS__)                     
 \
--          && ! defined(__CYGWIN__)
+-#      if defined(_MSC_VER) && ! defined(__BEOS__) && ! defined(__CYGWIN__)
 -#        define XMLIMPORT __declspec(dllimport)
 -#      endif
 -

Reply via email to