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

Stephan Bergmann sbergman at redhat.com
Wed Feb 1 15:33:46 UTC 2017


 connectivity/source/drivers/macab/MacabRecords.cxx |   37 ++++++++++-----------
 1 file changed, 18 insertions(+), 19 deletions(-)

New commits:
commit 3667820d9445c690b0a5575f267e731a59e47d7a
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Feb 1 16:33:02 2017 +0100

    loplugin:useuniqueptr
    
    Change-Id: Iffab8e3d8ecaad835d5f0cce68ede4eaea1547a4

diff --git a/connectivity/source/drivers/macab/MacabRecords.cxx b/connectivity/source/drivers/macab/MacabRecords.cxx
index 7174e6d..79b022c 100644
--- a/connectivity/source/drivers/macab/MacabRecords.cxx
+++ b/connectivity/source/drivers/macab/MacabRecords.cxx
@@ -17,6 +17,9 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <sal/config.h>
+
+#include <vector>
 
 #include "MacabRecords.hxx"
 #include "MacabRecord.hxx"
@@ -28,6 +31,7 @@
 #include <AddressBook/ABAddressBookC.h>
 #include <postmac.h>
 #include <com/sun/star/util/DateTime.hpp>
+#include <o3tl/make_unique.hxx>
 
 using namespace connectivity::macab;
 using namespace com::sun::star::util;
@@ -622,7 +626,7 @@ MacabHeader *MacabRecords::createHeaderForProperty(const ABPropertyType _propert
                 CFTypeRef multiValue;
                 OUString multiLabelString;
                 OUString multiPropertyString;
-                MacabHeader **multiHeaders = new MacabHeader *[multiLengthFirstLevel];
+                std::vector<std::unique_ptr<MacabHeader>> multiHeaders;
                 ABPropertyType multiType = (ABPropertyType) (ABMultiValuePropertyType(static_cast<ABMutableMultiValueRef>(const_cast<void *>(_propertyValue))) - 0x100);
 
                 multiPropertyString = CFStringToOUString(_propertyName);
@@ -638,6 +642,7 @@ MacabHeader *MacabRecords::createHeaderForProperty(const ABPropertyType _propert
                     /* label */
                     multiLabel = ABMultiValueCopyLabelAtIndex(static_cast<ABMutableMultiValueRef>(const_cast<void *>(_propertyValue)), i);
                     multiValue = ABMultiValueCopyValueAtIndex(static_cast<ABMutableMultiValueRef>(const_cast<void *>(_propertyValue)), i);
+                    std::unique_ptr<MacabHeader> hdr;
                     if(multiValue && multiLabel)
                     {
                         localizedMultiLabel = ABCopyLocalizedPropertyOrLabel(multiLabel);
@@ -645,17 +650,18 @@ MacabHeader *MacabRecords::createHeaderForProperty(const ABPropertyType _propert
                         CFRelease(multiLabel);
                         CFRelease(localizedMultiLabel);
                         multiLabel = OUStringToCFString(multiLabelString);
-                        multiHeaders[i] = createHeaderForProperty(multiType, multiValue, multiLabel);
-                        if (!multiHeaders[i])
-                            multiHeaders[i] = new MacabHeader();
-                        multiLengthSecondLevel += multiHeaders[i]->getSize();
+                        hdr.reset(createHeaderForProperty(multiType, multiValue, multiLabel));
+                        if (!hdr)
+                            hdr = o3tl::make_unique<MacabHeader>();
+                        multiLengthSecondLevel += hdr->getSize();
                     }
                     else
                     {
-                        multiHeaders[i] = new MacabHeader();
+                        hdr = o3tl::make_unique<MacabHeader>();
                     }
                     if(multiValue)
                         CFRelease(multiValue);
+                    multiHeaders.push_back(std::move(hdr));
                 }
 
                 /* We now have enough information to create our final MacabHeader.
@@ -676,10 +682,6 @@ MacabHeader *MacabRecords::createHeaderForProperty(const ABPropertyType _propert
 
                     headerNames[i] = multiHeaders[j]->copy(k);
                 }
-                for(i = 0; i < multiLengthFirstLevel; i++)
-                    delete multiHeaders[i];
-
-                delete [] multiHeaders;
             }
             break;
 
@@ -775,7 +777,7 @@ MacabHeader *MacabRecords::createHeaderForProperty(const ABPropertyType _propert
                 sal_Int32 i,j,k;
                 CFTypeRef arrValue;
                 ABPropertyType arrType;
-                MacabHeader **arrHeaders = new MacabHeader *[arrLength];
+                std::vector<std::unique_ptr<MacabHeader>> arrHeaders;
                 OUString propertyNameString = CFStringToOUString(_propertyName);
                 OUString arrLabelString;
                 CFStringRef arrLabel;
@@ -796,11 +798,12 @@ MacabHeader *MacabRecords::createHeaderForProperty(const ABPropertyType _propert
                     arrType = (ABPropertyType) getABTypeFromCFType( CFGetTypeID(arrValue) );
                     arrLabelString = propertyNameString + OUString::number(i);
                     arrLabel = OUStringToCFString(arrLabelString);
-                    arrHeaders[i] = createHeaderForProperty(arrType, arrValue, arrLabel);
-                    if (!arrHeaders[i])
-                        arrHeaders[i] = new MacabHeader();
-                    length += arrHeaders[i]->getSize();
+                    auto hdr = std::unique_ptr<MacabHeader>(createHeaderForProperty(arrType, arrValue, arrLabel));
+                    if (!hdr)
+                        hdr = o3tl::make_unique<MacabHeader>();
+                    length += hdr->getSize();
                     CFRelease(arrLabel);
+                    arrHeaders.push_back(std::move(hdr));
                 }
 
                 headerNames = new macabfield *[length];
@@ -814,10 +817,6 @@ MacabHeader *MacabRecords::createHeaderForProperty(const ABPropertyType _propert
 
                     headerNames[i] = arrHeaders[j]->copy(k);
                 }
-                for(i = 0; i < arrLength; i++)
-                    delete arrHeaders[i];
-
-                delete [] arrHeaders;
             }
             break;
 


More information about the Libreoffice-commits mailing list