sc/source/filter/inc/condformatbuffer.hxx  |    2 +-
 sc/source/filter/oox/condformatbuffer.cxx  |    1 -
 sc/source/filter/oox/condformatcontext.cxx |    6 ++++++
 3 files changed, 7 insertions(+), 2 deletions(-)

New commits:
commit 550eb72343eaeacb8b3b80f12e3acb4d4a1431e5
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Tue Mar 28 17:48:19 2023 -0400
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Wed Apr 12 18:53:12 2023 +0200

    sc: filter: oox: do not insert rule too early
    
    The </cfRule> tag is a good place to do a post check
    the conditional format sanity.
    
    Signed-off-by: Henry Castro <hcas...@collabora.com>
    Change-Id: Id6e99c81011040ec47034e993490fae5c71d7e04
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149719
    Reviewed-by: Andras Timar <andras.ti...@collabora.com>
    Tested-by: Andras Timar <andras.ti...@collabora.com>

diff --git a/sc/source/filter/inc/condformatbuffer.hxx 
b/sc/source/filter/inc/condformatbuffer.hxx
index 61271c08441d..0ff7006ee439 100644
--- a/sc/source/filter/inc/condformatbuffer.hxx
+++ b/sc/source/filter/inc/condformatbuffer.hxx
@@ -219,9 +219,9 @@ public:
     const ScRangeList& getRanges() const { return maModel.maRanges; }
 
     void                setReadyForFinalize() { mbReadyForFinalize = true; }
+    void                insertRule( CondFormatRuleRef const & xRule );
 private:
     CondFormatRuleRef   createRule();
-    void                insertRule( CondFormatRuleRef const & xRule );
 
 private:
     typedef RefMap< sal_Int32, CondFormatRule > CondFormatRuleMap;
diff --git a/sc/source/filter/oox/condformatbuffer.cxx 
b/sc/source/filter/oox/condformatbuffer.cxx
index 01aa5a5e1c54..6a9b80482f3a 100644
--- a/sc/source/filter/oox/condformatbuffer.cxx
+++ b/sc/source/filter/oox/condformatbuffer.cxx
@@ -1108,7 +1108,6 @@ CondFormatRuleRef CondFormat::importCfRule( const 
AttributeList& rAttribs )
 {
     CondFormatRuleRef xRule = createRule();
     xRule->importCfRule( rAttribs );
-    insertRule( xRule );
     return xRule;
 }
 
diff --git a/sc/source/filter/oox/condformatcontext.cxx 
b/sc/source/filter/oox/condformatcontext.cxx
index 9c9a47065bac..ab72727d1429 100644
--- a/sc/source/filter/oox/condformatcontext.cxx
+++ b/sc/source/filter/oox/condformatcontext.cxx
@@ -201,6 +201,12 @@ void CondFormatContext::onEndElement()
             if(mxCondFmt)
                 mxCondFmt->setReadyForFinalize();
             break;
+        case XLS_TOKEN( cfRule ):
+            if (mxCondFmt && mxRule)
+            {
+                mxCondFmt->insertRule(mxRule);
+            }
+        break;
     }
 }
 

Reply via email to