sw/source/core/docnode/ndtbl.cxx |   38 +++++++++++++-------------------------
 1 file changed, 13 insertions(+), 25 deletions(-)

New commits:
commit 4e3dfc1460aa7600643056f10b93f403c1454ffd
Author:     karthik <[email protected]>
AuthorDate: Mon Feb 16 15:20:52 2026 +0530
Commit:     Caolán McNamara <[email protected]>
CommitDate: Tue Feb 17 09:51:09 2026 +0100

    sw: Fix memory leak in lcl_SetDfltBoxAttr
    
    `DfltBoxAttrMap_t` is no longer needed as cache. This is related to
    513bfbd476113f648090a8275cece4dc04ba0463
    
    Change-Id: I5115502c69dc7f33d8c70541c8f36e8860e5282e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199512
    Tested-by: Caolán McNamara <[email protected]>
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Jenkins

diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index ed164d208cb5..53b3af1d3140 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -149,36 +149,24 @@ static void lcl_SetDfltBoxAttr( SwFrameFormat& rFormat, 
sal_uInt8 nId )
 typedef std::map<SwFrameFormat *, SwTableBoxFormat *> DfltBoxAttrMap_t;
 typedef std::vector<DfltBoxAttrMap_t *> DfltBoxAttrList_t;
 
-static void lcl_SetDfltBoxAttr(SwTableBox& rBox, size_t row,
-                               size_t col, size_t nRows, size_t nCols, 
sal_uInt8 const nId,
+static void lcl_SetDfltBoxAttr(SwTableBox& rBox, size_t row, size_t col, 
size_t nRows, size_t nCols,
+                               sal_uInt8 const nId,
                                SwTableAutoFormat const* const pAutoFormat = 
nullptr)
 {
-    DfltBoxAttrMap_t* pMap = new DfltBoxAttrMap_t;
-
-    SwTableBoxFormat* pNewTableBoxFormat = nullptr;
     SwFrameFormat* pBoxFrameFormat = rBox.GetFrameFormat();
-    DfltBoxAttrMap_t::iterator const iter(pMap->find(pBoxFrameFormat));
-    if (pMap->end() != iter)
-    {
-        pNewTableBoxFormat = iter->second;
-    }
-    else
-    {
-        SwDoc& rDoc = pBoxFrameFormat->GetDoc();
-        // format does not exist, so create it
-        pNewTableBoxFormat = rDoc.MakeTableBoxFormat();
-        pNewTableBoxFormat->SetFormatAttr( pBoxFrameFormat->GetAttrSet().Get( 
RES_FRM_SIZE ) );
 
-        if( pAutoFormat )
-            
pAutoFormat->UpdateToSet(const_cast<SfxItemSet&>(static_cast<SfxItemSet const&>(
-                                         pNewTableBoxFormat->GetAttrSet())),
-                                     row, col, nRows, nCols, 
rDoc.GetNumberFormatter());
-        else
-            ::lcl_SetDfltBoxAttr( *pNewTableBoxFormat, nId );
+    SwDoc& rDoc = pBoxFrameFormat->GetDoc();
+    SwTableBoxFormat* pNewTableBoxFormat = rDoc.MakeTableBoxFormat();
+    
pNewTableBoxFormat->SetFormatAttr(pBoxFrameFormat->GetAttrSet().Get(RES_FRM_SIZE));
 
-        (*pMap)[pBoxFrameFormat] = pNewTableBoxFormat;
-    }
-    rBox.ChgFrameFormat( pNewTableBoxFormat );
+    if (pAutoFormat)
+        
pAutoFormat->UpdateToSet(const_cast<SfxItemSet&>(static_cast<SfxItemSet const&>(
+                                     pNewTableBoxFormat->GetAttrSet())),
+                                 row, col, nRows, nCols, 
rDoc.GetNumberFormatter());
+    else
+        ::lcl_SetDfltBoxAttr(*pNewTableBoxFormat, nId);
+
+    rBox.ChgFrameFormat(pNewTableBoxFormat);
 }
 
 static SwTableBoxFormat *lcl_CreateDfltBoxFormat( SwDoc &rDoc, 
std::vector<SwTableBoxFormat*> &rBoxFormatArr,

Reply via email to