[Libreoffice-commits] core.git: sw/inc sw/source
Ivan Timofeev
timofeev.i.s at gmail.com
Mon Jul 29 12:55:03 PDT 2013
sw/inc/tblafmt.hxx | 2 +-
sw/source/core/doc/tblafmt.cxx | 5 ++---
sw/source/ui/table/tautofmt.cxx | 7 +++----
3 files changed, 6 insertions(+), 8 deletions(-)
New commits:
commit 2f527be5513159c0aebd93f356cbd2b1dc04b253
Author: Ivan Timofeev <timofeev.i.s at gmail.com>
Date: Mon Jul 29 21:43:59 2013 +0400
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 at redhat.com>
Tested-by: Michael Stahl <mstahl at redhat.com>
diff --git a/sw/inc/tblafmt.hxx b/sw/inc/tblafmt.hxx
index 58b1f10..404aaf6 100644
--- a/sw/inc/tblafmt.hxx
+++ b/sw/inc/tblafmt.hxx
@@ -314,7 +314,7 @@ public:
SwTableAutoFmt & operator[](size_t i);
void InsertAutoFmt(size_t i, SwTableAutoFmt * pFmt);
void EraseAutoFmt(size_t i);
- void MoveAutoFmt(size_t target, size_t source);
+ SwTableAutoFmt* ReleaseAutoFmt(size_t i);
sal_Bool Load();
sal_Bool Save() const;
diff --git a/sw/source/core/doc/tblafmt.cxx b/sw/source/core/doc/tblafmt.cxx
index 80483b2..40a07be 100644
--- a/sw/source/core/doc/tblafmt.cxx
+++ b/sw/source/core/doc/tblafmt.cxx
@@ -1051,10 +1051,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 4300b0d..2b4d1cf 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 );
More information about the Libreoffice-commits
mailing list