summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
authorIvan Timofeev <timofeev.i.s@gmail.com>2013-07-29 21:43:59 +0400
committerMichael Stahl <mstahl@redhat.com>2013-07-29 21:54:44 +0200
commit75ad317118aeb4cd875127d3918e5c912f56fbca (patch)
tree1163f738ad3e206435b8282b5f9c598e87ddb004 /sw/source
parent409d83a2fee9e170c5604707900d1d005ba9d513 (diff)
fdo#67467: fix crash when renaming table in AutoFormat dialog
this reverts 5031e17d4b11181be94448702b1026bd38e0b3c4 and uses ptr_vector::release instead of ptr_vector::erase to prevent object deletion. The use of "transfer" leads to "Assertion `(void*)&from != (void*)this' failed". Change-Id: I77467ce9e1d9dd4b833032ebbe920cbb34d36675 Reviewed-on: https://gerrit.libreoffice.org/5172 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com> (cherry picked from commit 2f527be5513159c0aebd93f356cbd2b1dc04b253) Signed-off-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'sw/source')
-rw-r--r--sw/source/core/doc/tblafmt.cxx5
-rw-r--r--sw/source/ui/table/tautofmt.cxx7
2 files changed, 5 insertions, 7 deletions
diff --git a/sw/source/core/doc/tblafmt.cxx b/sw/source/core/doc/tblafmt.cxx
index 2031563fa55c..2586fe49654e 100644
--- a/sw/source/core/doc/tblafmt.cxx
+++ b/sw/source/core/doc/tblafmt.cxx
@@ -1050,10 +1050,9 @@ void SwTableAutoFmtTbl::EraseAutoFmt(size_t const i)
m_pImpl->m_AutoFormats.erase(m_pImpl->m_AutoFormats.begin() + i);
}
-void SwTableAutoFmtTbl::MoveAutoFmt(size_t const target, size_t source)
+SwTableAutoFmt* SwTableAutoFmtTbl::ReleaseAutoFmt(size_t const i)
{
- m_pImpl->m_AutoFormats.transfer(m_pImpl->m_AutoFormats.begin() + target,
- m_pImpl->m_AutoFormats.begin() + source, m_pImpl->m_AutoFormats);
+ return m_pImpl->m_AutoFormats.release(m_pImpl->m_AutoFormats.begin() + i).release();
}
SwTableAutoFmtTbl::~SwTableAutoFmtTbl()
diff --git a/sw/source/ui/table/tautofmt.cxx b/sw/source/ui/table/tautofmt.cxx
index aa93c35611f2..0fcb9c143424 100644
--- a/sw/source/ui/table/tautofmt.cxx
+++ b/sw/source/ui/table/tautofmt.cxx
@@ -409,19 +409,18 @@ IMPL_LINK_NOARG(SwAutoFormatDlg, RenameHdl)
{
// no format with this name exists, so rename it
m_pLbFormat->RemoveEntry( nDfltStylePos + nIndex );
- SwTableAutoFmt* p = &(*pTableTbl)[ nIndex ];
+ SwTableAutoFmt* p = pTableTbl->ReleaseAutoFmt( nIndex );
p->SetName( aFormatName );
// keep all arrays sorted!
for( n = 1; n < pTableTbl->size(); ++n )
- if ((n != nIndex) &&
- ((*pTableTbl)[n].GetName() > aFormatName))
+ if ((*pTableTbl)[n].GetName() > aFormatName)
{
break;
}
- pTableTbl->MoveAutoFmt(n, nIndex);
+ pTableTbl->InsertAutoFmt( n, p );
m_pLbFormat->InsertEntry( aFormatName, nDfltStylePos + n );
m_pLbFormat->SelectEntryPos( nDfltStylePos + n );