From 4054dff516367b332b7e3ce6fa91a452bf690571 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Fri, 26 Oct 2018 12:06:27 +0200 Subject: use unique_ptr when Clone()'ing PoolItems and fix a handful of small leaks in the process Change-Id: I876e12ff5305f9dda84532d4182fb91657d6fa0c Reviewed-on: https://gerrit.libreoffice.org/62389 Tested-by: Jenkins Reviewed-by: Noel Grandin --- svx/source/svdraw/svdibrow.cxx | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) (limited to 'svx') diff --git a/svx/source/svdraw/svdibrow.cxx b/svx/source/svdraw/svdibrow.cxx index db64774aa686..eef8f83fc9bb 100644 --- a/svx/source/svdraw/svdibrow.cxx +++ b/svx/source/svdraw/svdibrow.cxx @@ -1126,7 +1126,7 @@ IMPL_LINK(SdrItemBrowser, ChangedHdl, SdrItemBrowserControl&, rBrowse, void) || aNewText == "DEFAULT" ); if (!bDel) { - SfxPoolItem* pNewItem=aSet.Get(pEntry->nWhichId).Clone(); + std::unique_ptr pNewItem(aSet.Get(pEntry->nWhichId).Clone()); sal_Int32 nLongVal = aNewText.toInt32(); if (pEntry->bCanNum) { if (nLongVal>pEntry->nMax) nLongVal=pEntry->nMax; @@ -1149,20 +1149,20 @@ IMPL_LINK(SdrItemBrowser, ChangedHdl, SdrItemBrowserControl&, rBrowse, void) nLongY = s.toInt32(); } switch (pEntry->eItemType) { - case ItemType::BYTE : static_cast(pNewItem)->SetValue(static_cast(nLongVal)); break; - case ItemType::INT16 : static_cast(pNewItem)->SetValue(static_cast(nLongVal)); break; - case ItemType::UINT16: static_cast(pNewItem)->SetValue(static_cast(nLongVal)); break; + case ItemType::BYTE : static_cast(pNewItem.get())->SetValue(static_cast(nLongVal)); break; + case ItemType::INT16 : static_cast(pNewItem.get())->SetValue(static_cast(nLongVal)); break; + case ItemType::UINT16: static_cast(pNewItem.get())->SetValue(static_cast(nLongVal)); break; case ItemType::INT32: { - if(dynamic_cast(pNewItem) != nullptr) + if(dynamic_cast(pNewItem.get())) { aNewText = aNewText.replace(',', '.'); double nVal = aNewText.toFloat(); nLongVal = static_cast(nVal * 100.0 + 0.5); } - static_cast(pNewItem)->SetValue(nLongVal); + static_cast(pNewItem.get())->SetValue(nLongVal); } break; - case ItemType::UINT32: static_cast(pNewItem)->SetValue(aNewText.toInt32()); break; - case ItemType::ENUM : static_cast(pNewItem)->SetEnumValue(static_cast(nLongVal)); break; + case ItemType::UINT32: static_cast(pNewItem.get())->SetValue(aNewText.toInt32()); break; + case ItemType::ENUM : static_cast(pNewItem.get())->SetEnumValue(static_cast(nLongVal)); break; case ItemType::BOOL: { aNewText = aNewText.toAsciiUpperCase(); if (aNewText == "TRUE") nLongVal=1; @@ -1171,27 +1171,27 @@ IMPL_LINK(SdrItemBrowser, ChangedHdl, SdrItemBrowserControl&, rBrowse, void) if (aNewText == "EIN") nLongVal=1; if (aNewText == "ON") nLongVal=1; if (aNewText == "YES") nLongVal=1; - static_cast(pNewItem)->SetValue(nLongVal == 1); + static_cast(pNewItem.get())->SetValue(nLongVal == 1); } break; - case ItemType::FLAG : static_cast(pNewItem)->SetValue(static_cast(nLongVal)); break; - case ItemType::STRING: static_cast(pNewItem)->SetValue(aNewText); break; - case ItemType::POINT : static_cast(pNewItem)->SetValue(Point(nLongX,nLongY)); break; + case ItemType::FLAG : static_cast(pNewItem.get())->SetValue(static_cast(nLongVal)); break; + case ItemType::STRING: static_cast(pNewItem.get())->SetValue(aNewText); break; + case ItemType::POINT : static_cast(pNewItem.get())->SetValue(Point(nLongX,nLongY)); break; case ItemType::RECT : break; case ItemType::RANGE : { - static_cast(pNewItem)->From()=static_cast(nLongX); - static_cast(pNewItem)->From()=static_cast(nLongY); + static_cast(pNewItem.get())->From()=static_cast(nLongX); + static_cast(pNewItem.get())->From()=static_cast(nLongY); } break; case ItemType::FRACTION: { if (!bPairX) nLongX=1; if (!bPairY) nLongY=1; - static_cast(pNewItem)->SetValue(Fraction(nLongX,nLongY)); + static_cast(pNewItem.get())->SetValue(Fraction(nLongX,nLongY)); } break; case ItemType::XCOLOR: break; case ItemType::COLOR: break; case ItemType::FONT: { - static_cast(pNewItem)->SetFamily( FAMILY_DONTKNOW ); - static_cast(pNewItem)->SetFamilyName(aNewText); - static_cast(pNewItem)->SetStyleName(OUString()); + static_cast(pNewItem.get())->SetFamily( FAMILY_DONTKNOW ); + static_cast(pNewItem.get())->SetFamilyName(aNewText); + static_cast(pNewItem.get())->SetStyleName(OUString()); } break; case ItemType::FONTHEIGHT: { sal_uInt32 nHgt=0; @@ -1201,20 +1201,19 @@ IMPL_LINK(SdrItemBrowser, ChangedHdl, SdrItemBrowserControl&, rBrowse, void) } else { nHgt=static_cast(nLongVal); } - static_cast(pNewItem)->SetHeight(nHgt,nProp); + static_cast(pNewItem.get())->SetHeight(nHgt,nProp); } break; case ItemType::FONTWIDTH: { sal_uInt16 nProp=100; if (aNewText.indexOf('%') != -1) { nProp=static_cast(nLongVal); } - static_cast(pNewItem)->SetValue(nProp); + static_cast(pNewItem.get())->SetValue(nProp); } break; case ItemType::FIELD: break; default: break; } // switch aNewSet.Put(*pNewItem); - delete pNewItem; } pView->SetAttributes(aNewSet,bDel); } -- cgit