[Libreoffice-commits] core.git: writerfilter/source

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Sun Jul 11 14:44:43 UTC 2021


 writerfilter/source/dmapper/DomainMapper.cxx      |    2 -
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   25 ++++++++++++++++------
 writerfilter/source/dmapper/StyleSheetTable.cxx   |    2 -
 3 files changed, 21 insertions(+), 8 deletions(-)

New commits:
commit 83a235450e6bf3c671ab9a1710e92a356d4d2052
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Sun Jul 11 13:02:07 2021 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Sun Jul 11 16:44:11 2021 +0200

    ofz#36037 Revert "pProperties in StyleSheetEntry is never nullptr"
    
    This reverts commit a7eb2f57d8e586577679ecd085b9aa90746ec36b.
    
    Reason for revert: tut tut, appears I was wrong
    
    Change-Id: Ie21db35d7809c2bc3d71c8231bf13bbdc0415b5f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118716
    Tested-by: Noel Grandin <noel.grandin at collabora.co.uk>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 0675d62ae22f..39b118e108f0 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -2732,7 +2732,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext )
                 if( !sStyleName.isEmpty() && GetStyleSheetTable() )
                     pStyle = GetStyleSheetTable()->FindStyleSheetByConvertedStyleName( sStyleName );
 
-                if( pStyle
+                if( pStyle && pStyle->pProperties
                     && pStyle->pProperties->isSet(PROP_BREAK_TYPE)
                     && pStyle->pProperties->getProperty(PROP_BREAK_TYPE)->second == aBreakType )
                 {
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index f80f73ffdd7b..1ab11e0b149f 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -128,6 +128,8 @@ static void lcl_linenumberingHeaderFooter( const uno::Reference<container::XName
     if (!pEntry)
         return;
     const StyleSheetPropertyMap* pStyleSheetProperties = pEntry->pProperties.get();
+    if ( !pStyleSheetProperties )
+        return;
     sal_Int32 nListId = pStyleSheetProperties->GetListId();
     if( xStyles.is() )
     {
@@ -910,14 +912,17 @@ uno::Any DomainMapper_Impl::GetPropertyFromStyleSheet(PropertyIds eId, StyleShee
 {
     while(pEntry)
     {
-        std::optional<PropertyMap::Property> aProperty =
-                pEntry->pProperties->getProperty(eId);
-        if( aProperty )
+        if(pEntry->pProperties)
         {
-            if (pIsDocDefault)
-                *pIsDocDefault = pEntry->pProperties->isDocDefault(eId);
+            std::optional<PropertyMap::Property> aProperty =
+                    pEntry->pProperties->getProperty(eId);
+            if( aProperty )
+            {
+                if (pIsDocDefault)
+                    *pIsDocDefault = pEntry->pProperties->isDocDefault(eId);
 
-            return aProperty->second;
+                return aProperty->second;
+            }
         }
         //search until the property is set or no parent is available
         StyleSheetEntryPtr pNewEntry;
@@ -1200,6 +1205,8 @@ void DomainMapper_Impl::CheckUnregisteredFrameConversion( )
         if ( pParaStyle )
         {
             const StyleSheetPropertyMap* pStyleProperties = pParaStyle->pProperties.get();
+            if (!pStyleProperties)
+                return;
             sal_Int32 nWidth =
                 rAppendContext.pLastParagraphProperties->Getw() > 0 ?
                     rAppendContext.pLastParagraphProperties->Getw() :
@@ -1418,6 +1425,8 @@ void DomainMapper_Impl::CheckUnregisteredFrameConversion( )
 static sal_Int32 lcl_getListId(const StyleSheetEntryPtr& rEntry, const StyleSheetTablePtr& rStyleTable, bool & rNumberingFromBaseStyle)
 {
     const StyleSheetPropertyMap* pEntryProperties = rEntry->pProperties.get();
+    if (!pEntryProperties)
+        return -1;
 
     sal_Int32 nListId = pEntryProperties->GetListId();
     // The style itself has a list id.
@@ -1457,6 +1466,8 @@ sal_Int16 DomainMapper_Impl::GetListLevel(const StyleSheetEntryPtr& pEntry,
         return -1;
 
     const StyleSheetPropertyMap* pEntryProperties = pEntry->pProperties.get();
+    if (!pEntryProperties)
+        return -1;
 
     nListLevel = pEntryProperties->GetListLevel();
     // The style itself has a list level.
@@ -7602,6 +7613,8 @@ uno::Reference<container::XIndexAccess> DomainMapper_Impl::GetCurrentNumberingRu
         if (!pEntry)
             return xRet;
         const StyleSheetPropertyMap* pStyleSheetProperties = pEntry->pProperties.get();
+        if (!pStyleSheetProperties)
+            return xRet;
         sal_Int32 nListId = pStyleSheetProperties->GetListId();
         if (nListId < 0)
             return xRet;
diff --git a/writerfilter/source/dmapper/StyleSheetTable.cxx b/writerfilter/source/dmapper/StyleSheetTable.cxx
index 0636c87589b1..ae9440be8381 100644
--- a/writerfilter/source/dmapper/StyleSheetTable.cxx
+++ b/writerfilter/source/dmapper/StyleSheetTable.cxx
@@ -1004,7 +1004,7 @@ void StyleSheetTable::ApplyStyleSheets( const FontTablePtr& rFontTable )
                             xStyle.set(xStyles->getByName(sConvertedStyleName), uno::UNO_QUERY_THROW);
 
                             StyleSheetPropertyMap* pPropertyMap = pEntry->pProperties.get();
-                            if (pPropertyMap->GetListId() == -1)
+                            if (pPropertyMap && pPropertyMap->GetListId() == -1)
                             {
                                 // No properties? Word default is 'none', Writer one is 'arabic', handle this.
                                 uno::Reference<beans::XPropertySet> xPropertySet(xStyle, uno::UNO_QUERY_THROW);


More information about the Libreoffice-commits mailing list