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 75ad317118aeb4cd875127d3918e5c912f56fbca Author: Ivan Timofeev <[email protected]> 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 <[email protected]> Tested-by: Michael Stahl <[email protected]> (cherry picked from commit 2f527be5513159c0aebd93f356cbd2b1dc04b253) Signed-off-by: Michael Stahl <[email protected]> diff --git a/sw/inc/tblafmt.hxx b/sw/inc/tblafmt.hxx index 7340427..abee1ec 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 2031563..2586fe4 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 aa93c35..0fcb9c1 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 ); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
