sw/source/ui/docvw/edtwin.cxx | 59 +++++++++++++++++++----------------------- ucb/source/inc/regexpmap.tpt | 10 +++---- 2 files changed, 32 insertions(+), 37 deletions(-)
New commits: commit 6506af86b5e20a860c8d2d1dd578a22914df5f53 Author: Michael Stahl <mst...@redhat.com> Date: Wed Jun 6 11:54:24 2012 +0200 ucb: second try to fix weird STL assertion on tinderbox It's possible that the constructor of RegexpMapIterImpl does not initialize m_aIndex, so try to park m_aIndex on some end() iterator; it looks like m_aIndex will not actually be used in this case, because m_nList = -1. Change-Id: I74cd0d1d87f3e90217c39bcd3168f157066ff3cb diff --git a/ucb/source/inc/regexpmap.tpt b/ucb/source/inc/regexpmap.tpt index 0090029..64abc37 100644 --- a/ucb/source/inc/regexpmap.tpt +++ b/ucb/source/inc/regexpmap.tpt @@ -134,10 +134,11 @@ void RegexpMapIterImpl< Val >::setEntry() const //============================================================================ template< typename Val > RegexpMapIterImpl< Val >::RegexpMapIterImpl(RegexpMapImpl< Val > * pTheMap, - bool bBegin): - m_aEntry(rtl::OUString(), 0), - m_pMap(pTheMap), - m_bEntrySet(false) + bool bBegin) + : m_aEntry(rtl::OUString(), 0) + , m_aIndex(pTheMap->m_aList[Regexp::KIND_DOMAIN].end()) + , m_pMap(pTheMap) + , m_bEntrySet(false) { if (bBegin) { @@ -148,7 +149,6 @@ RegexpMapIterImpl< Val >::RegexpMapIterImpl(RegexpMapImpl< Val > * pTheMap, else { m_nList = Regexp::KIND_DOMAIN; - m_aIndex = m_pMap->m_aList[Regexp::KIND_DOMAIN].end(); } } commit de7d2de928cda697b10a08d14fb958d0157217c6 Author: Brad Sowden <c...@sowden.org> Date: Wed Jun 6 18:34:01 2012 +1200 Use a vector rather than a pointer to a vector Change-Id: I437a665ffa225ce69e10f7ee71ff2902c3db505e diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx index fffe6c3..b923ec5 100644 --- a/sw/source/ui/docvw/edtwin.cxx +++ b/sw/source/ui/docvw/edtwin.cxx @@ -272,36 +272,31 @@ public: struct QuickHelpData { - std::vector<String> *pHelpStrings; + std::vector<String> m_aHelpStrings; sal_uInt16* pAttrs; CommandExtTextInputData* pCETID; sal_uLong nTipId; sal_uInt16 nLen, nCurArrPos; sal_Bool bClear : 1, bChkInsBlank : 1, bIsTip : 1, bIsAutoText : 1; - QuickHelpData() : pAttrs( 0 ), pCETID( 0 ) - { - pHelpStrings = new std::vector<String>; - ClearCntnt(); - } - ~QuickHelpData() { delete pHelpStrings; } + QuickHelpData() : pAttrs( 0 ), pCETID( 0 ) { ClearCntnt(); } void Move( QuickHelpData& rCpy ); void ClearCntnt(); void Start( SwWrtShell& rSh, sal_uInt16 nWrdLen ); void Stop( SwWrtShell& rSh ); - sal_Bool HasCntnt() const { return !pHelpStrings->empty() && 0 != nLen; } + sal_Bool HasCntnt() const { return !m_aHelpStrings.empty() && 0 != nLen; } void Inc( sal_Bool bEndLess ) { - if( ++nCurArrPos >= pHelpStrings->size() ) + if( ++nCurArrPos >= m_aHelpStrings.size() ) nCurArrPos = (bEndLess && !bIsAutoText ) ? 0 : nCurArrPos-1; } void Dec( sal_Bool bEndLess ) { if( 0 == nCurArrPos-- ) - nCurArrPos = (bEndLess && !bIsAutoText ) ? pHelpStrings->size()-1 : 0; + nCurArrPos = (bEndLess && !bIsAutoText ) ? m_aHelpStrings.size()-1 : 0; } void FillStrArr( SwWrtShell& rSh, const String& rWord ); void SortAndFilter(); @@ -2475,7 +2470,7 @@ KEYINPUT_CHECKTABLE_INSDEL: // replace the word or abbreviation with the auto text rSh.StartUndo( UNDO_START ); - String sFnd( (*aTmpQHD.pHelpStrings)[ aTmpQHD.nCurArrPos ] ); + String sFnd( aTmpQHD.m_aHelpStrings[ aTmpQHD.nCurArrPos ] ); if( aTmpQHD.bIsAutoText ) { SwGlossaryList* pList = ::GetGlossaryList(); @@ -5471,8 +5466,8 @@ uno::Reference< ::com::sun::star::accessibility::XAccessible > SwEditWin::Create void QuickHelpData::Move( QuickHelpData& rCpy ) { - pHelpStrings->clear(); - std::swap( pHelpStrings, rCpy.pHelpStrings ); + m_aHelpStrings.clear(); + m_aHelpStrings.swap( rCpy.m_aHelpStrings ); bClear = rCpy.bClear; nLen = rCpy.nLen; @@ -5495,7 +5490,7 @@ void QuickHelpData::ClearCntnt() nLen = nCurArrPos = 0; bClear = bChkInsBlank = sal_False; nTipId = 0; - pHelpStrings->clear(); + m_aHelpStrings.clear(); bIsTip = sal_True; bIsAutoText = sal_True; delete pCETID, pCETID = 0; @@ -5524,12 +5519,12 @@ void QuickHelpData::Start( SwWrtShell& rSh, sal_uInt16 nWrdLen ) rSh.GetCharRect().Pos() ))); aPt.Y() -= 3; nTipId = Help::ShowTip( &rWin, Rectangle( aPt, Size( 1, 1 )), - (*pHelpStrings)[ nCurArrPos ], + m_aHelpStrings[ nCurArrPos ], QUICKHELP_LEFT | QUICKHELP_BOTTOM ); } else { - String sStr( (*pHelpStrings)[ nCurArrPos ] ); + String sStr( m_aHelpStrings[ nCurArrPos ] ); sStr.Erase( 0, nLen ); sal_uInt16 nL = sStr.Len(); pAttrs = new sal_uInt16[ nL ]; @@ -5609,17 +5604,17 @@ void QuickHelpData::FillStrArr( SwWrtShell& rSh, const String& rWord ) == sWordLower ) { if ( aWordCase == CASE_LOWER ) - pHelpStrings->push_back( rCC.lowercase( rStr ) ); + m_aHelpStrings.push_back( rCC.lowercase( rStr ) ); else if ( aWordCase == CASE_SENTENCE ) { String sTmp = rCC.lowercase( rStr ); sTmp.SetChar( 0, rStr.GetChar(0) ); - pHelpStrings->push_back( sTmp ); + m_aHelpStrings.push_back( sTmp ); } else if ( aWordCase == CASE_UPPER ) - pHelpStrings->push_back( rCC.uppercase( rStr ) ); + m_aHelpStrings.push_back( rCC.uppercase( rStr ) ); else // CASE_OTHER - use retrieved capitalization - pHelpStrings->push_back( rStr ); + m_aHelpStrings.push_back( rStr ); } } // Data for second loop iteration @@ -5640,17 +5635,17 @@ void QuickHelpData::FillStrArr( SwWrtShell& rSh, const String& rWord ) if ( rStr.Len() > rWord.Len() ) { if ( aWordCase == CASE_LOWER ) - pHelpStrings->push_back( rCC.lowercase( rStr ) ); + m_aHelpStrings.push_back( rCC.lowercase( rStr ) ); else if ( aWordCase == CASE_SENTENCE ) { String sTmp = rCC.lowercase( rStr ); sTmp.SetChar( 0, rStr.GetChar(0) ); - pHelpStrings->push_back( sTmp ); + m_aHelpStrings.push_back( sTmp ); } else if ( aWordCase == CASE_UPPER ) - pHelpStrings->push_back( rCC.uppercase( rStr ) ); + m_aHelpStrings.push_back( rCC.uppercase( rStr ) ); else // CASE_OTHER - use retrieved capitalization - pHelpStrings->push_back( rStr ); + m_aHelpStrings.push_back( rStr ); } } } @@ -5679,14 +5674,14 @@ struct EqualIgnoreCaseAscii // TODO - implement an i18n aware sort void QuickHelpData::SortAndFilter() { - std::sort( pHelpStrings->begin(), - pHelpStrings->end(), + std::sort( m_aHelpStrings.begin(), + m_aHelpStrings.end(), CompareIgnoreCaseAscii() ); - std::vector<String>::iterator it = std::unique( pHelpStrings->begin(), - pHelpStrings->end(), + std::vector<String>::iterator it = std::unique( m_aHelpStrings.begin(), + m_aHelpStrings.end(), EqualIgnoreCaseAscii() ); - pHelpStrings->erase( it, pHelpStrings->end() ); + m_aHelpStrings.erase( it, m_aHelpStrings.end() ); nCurArrPos = 0; } @@ -5700,10 +5695,10 @@ void SwEditWin::ShowAutoTextCorrectQuickHelp( if( pACfg->IsAutoTextTip() ) { SwGlossaryList* pList = ::GetGlossaryList(); - pList->HasLongName( rWord, pQuickHlpData->pHelpStrings ); + pList->HasLongName( rWord, &pQuickHlpData->m_aHelpStrings ); } - if( !pQuickHlpData->pHelpStrings->empty() ) + if( !pQuickHlpData->m_aHelpStrings.empty() ) { pQuickHlpData->bIsTip = sal_True; pQuickHlpData->bIsAutoText = sal_True; @@ -5719,7 +5714,7 @@ void SwEditWin::ShowAutoTextCorrectQuickHelp( } - if( !pQuickHlpData->pHelpStrings->empty() ) + if( !pQuickHlpData->m_aHelpStrings.empty() ) { pQuickHlpData->SortAndFilter(); pQuickHlpData->Start( rSh, rWord.Len() ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits