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

Takeshi Abe tabe at fixedpoint.jp
Wed Sep 24 13:00:25 PDT 2014


 sw/source/ui/envelp/label1.cxx     |   14 ++++-----
 sw/source/ui/envelp/labfmt.cxx     |    2 -
 sw/source/uibase/envelp/labimp.hxx |   33 -----------------------
 sw/source/uibase/inc/label.hxx     |    2 -
 sw/source/uibase/inc/labelcfg.hxx  |    4 --
 sw/source/uibase/inc/labrec.hxx    |   53 +++++++++++++++++++++++++++++++++++++
 6 files changed, 62 insertions(+), 46 deletions(-)

New commits:
commit f8ac4e2c436505304df7020a86dfc202851a9cab
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date:   Tue Sep 23 15:40:34 2014 +0900

    fdo#75757: remove inheritance to std::vector
    
    from SwLabRecs, by typedef'ing it as boost::ptr_vector<SwLabRec>.
    
    This is also a supposed fix for possible memory leaks in
    SwLabDlg::_ReplaceGroup(), since erasing elements did not
    delete pointers in the original code.
    
    Change-Id: I1c8a0393cb5bdcfca3408e9c8dc770d306f6d334
    Reviewed-on: https://gerrit.libreoffice.org/11597
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/ui/envelp/label1.cxx b/sw/source/ui/envelp/label1.cxx
index e9fdf52..a44e850 100644
--- a/sw/source/ui/envelp/label1.cxx
+++ b/sw/source/ui/envelp/label1.cxx
@@ -139,8 +139,8 @@ SwLabDlg::SwLabDlg(vcl::Window* pParent, const SfxItemSet& rSet,
 
     for (size_t nRecPos = 0; nRecPos < pRecs->size(); ++nRecPos)
     {
-        if (pRec->aMake == (*pRecs)[nRecPos]->aMake &&
-            pRec->aType == (*pRecs)[nRecPos]->aType)
+        if (pRec->aMake == (*pRecs)[nRecPos].aMake &&
+            pRec->aType == (*pRecs)[nRecPos].aType)
         {
             bDouble = true;
             break;
@@ -203,7 +203,7 @@ SwLabRec* SwLabDlg::GetRecord(const OUString &rRecName, bool bCont)
     const size_t nCount = Recs().size();
     for (size_t i = 0; i < nCount; ++i)
     {
-        pRec = Recs()[i];
+        pRec = &Recs()[i];
         if (pRec->aType != sCustom &&
             rRecName == pRec->aType && bCont == pRec->bCont)
         {
@@ -212,7 +212,7 @@ SwLabRec* SwLabDlg::GetRecord(const OUString &rRecName, bool bCont)
         }
     }
     if (!bFound)    // User defined
-        pRec = Recs()[0];
+        pRec = &Recs()[0];
 
     return(pRec);
 }
@@ -362,14 +362,14 @@ IMPL_LINK_NOARG(SwLabPage, MakeHdl)
     //insert the entries into the sorted list box
     for ( size_t i = 0; i < nCount; ++i )
     {
-        const OUString aType ( GetParentSwLabDlg()->Recs()[i]->aType );
+        const OUString aType ( GetParentSwLabDlg()->Recs()[i].aType );
         bool bInsert = false;
-        if ( GetParentSwLabDlg()->Recs()[i]->aType == sCustom )
+        if ( GetParentSwLabDlg()->Recs()[i].aType == sCustom )
         {
             bInsert = true;
             m_pTypeBox->InsertEntry(aType );
         }
-        else if ( GetParentSwLabDlg()->Recs()[i]->bCont == bCont )
+        else if ( GetParentSwLabDlg()->Recs()[i].bCont == bCont )
         {
             if ( m_pHiddenSortTypeBox->GetEntryPos(aType) == LISTBOX_ENTRY_NOTFOUND )
             {
diff --git a/sw/source/ui/envelp/labfmt.cxx b/sw/source/ui/envelp/labfmt.cxx
index 19fb1c0..51a9955 100644
--- a/sw/source/ui/envelp/labfmt.cxx
+++ b/sw/source/ui/envelp/labfmt.cxx
@@ -489,7 +489,7 @@ void SwLabFmtPage::FillItem(SwLabItem& rItem)
     {
         rItem.aMake = rItem.aType = SW_RESSTR(STR_CUSTOM);
 
-        SwLabRec& rRec = *GetParentSwLabDlg()->Recs()[0];
+        SwLabRec& rRec = GetParentSwLabDlg()->Recs()[0];
         rItem.lHDist  = rRec.lHDist  = static_cast< long >(GETFLDVAL(*m_pHDistField ));
         rItem.lVDist  = rRec.lVDist  = static_cast< long >(GETFLDVAL(*m_pVDistField ));
         rItem.lWidth  = rRec.lWidth  = static_cast< long >(GETFLDVAL(*m_pWidthField ));
diff --git a/sw/source/uibase/envelp/labimp.hxx b/sw/source/uibase/envelp/labimp.hxx
index caaf606..982132f 100644
--- a/sw/source/uibase/envelp/labimp.hxx
+++ b/sw/source/uibase/envelp/labimp.hxx
@@ -72,43 +72,10 @@
 #include <svtools/treelistbox.hxx>
 #include <label.hxx>
 #include <labimg.hxx>
-#include <vector>
 
 #define GETFLDVAL(rField)         (rField).Denormalize((rField).GetValue(FUNIT_TWIP))
 #define SETFLDVAL(rField, lValue) (rField).SetValue((rField).Normalize(lValue), FUNIT_TWIP)
 
-class SwLabRec
-{
-public:
-    SwLabRec(): lHDist(0), lVDist(0), lWidth(0), lHeight(0), lLeft(0), lUpper(0), lPWidth(0), lPHeight(0), nCols(0), nRows(0), bCont(false) {}
-
-    void SetFromItem( const SwLabItem& rItem );
-    void FillItem( SwLabItem& rItem ) const;
-
-    OUString        aMake;
-    OUString        aType;
-    long            lHDist;
-    long            lVDist;
-    long            lWidth;
-    long            lHeight;
-    long            lLeft;
-    long            lUpper;
-    long            lPWidth;
-    long            lPHeight;
-    sal_Int32       nCols;
-    sal_Int32       nRows;
-    bool        bCont;
-};
-
-class SwLabRecs : public std::vector<SwLabRec*> {
-public:
-    ~SwLabRecs()
-    {
-        for(const_iterator it = begin(); it != end(); ++it)
-            delete *it;
-    }
-};
-
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/inc/label.hxx b/sw/source/uibase/inc/label.hxx
index 838c101..61b452d 100644
--- a/sw/source/uibase/inc/label.hxx
+++ b/sw/source/uibase/inc/label.hxx
@@ -24,8 +24,6 @@
 #include <labelcfg.hxx>
 #include <vector>
 
-class SwLabRec;
-class SwLabRecs;
 class SwLabItem;
 class SwLabPrtPage;
 class SwDBManager;
diff --git a/sw/source/uibase/inc/labelcfg.hxx b/sw/source/uibase/inc/labelcfg.hxx
index 40bd8ce..0a8a162 100644
--- a/sw/source/uibase/inc/labelcfg.hxx
+++ b/sw/source/uibase/inc/labelcfg.hxx
@@ -21,13 +21,11 @@
 
 #include <unotools/configitem.hxx>
 #include "swdllapi.h"
+#include "labrec.hxx"
 
 #include <map>
 #include <vector>
 
-class SwLabRecs;
-class SwLabRec;
-
 struct SwLabelMeasure
 {
     OUString m_aMeasure;     // string contains the label dimensions
diff --git a/sw/source/uibase/inc/labrec.hxx b/sw/source/uibase/inc/labrec.hxx
new file mode 100644
index 0000000..3e5f124
--- /dev/null
+++ b/sw/source/uibase/inc/labrec.hxx
@@ -0,0 +1,53 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef INCLUDED_SW_SOURCE_UIBASE_INC_LABREC_HXX
+#define INCLUDED_SW_SOURCE_UIBASE_INC_LABREC_HXX
+
+#include <boost/ptr_container/ptr_vector.hpp>
+
+class SwLabItem;
+
+class SwLabRec
+{
+public:
+    SwLabRec(): lHDist(0), lVDist(0), lWidth(0), lHeight(0), lLeft(0), lUpper(0), lPWidth(0), lPHeight(0), nCols(0), nRows(0), bCont(false) {}
+
+    void SetFromItem( const SwLabItem& rItem );
+    void FillItem( SwLabItem& rItem ) const;
+
+    OUString        aMake;
+    OUString        aType;
+    long            lHDist;
+    long            lVDist;
+    long            lWidth;
+    long            lHeight;
+    long            lLeft;
+    long            lUpper;
+    long            lPWidth;
+    long            lPHeight;
+    sal_Int32       nCols;
+    sal_Int32       nRows;
+    bool        bCont;
+};
+
+typedef boost::ptr_vector<SwLabRec> SwLabRecs;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list