summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjulien2412 <serval2412@yahoo.fr>2011-10-24 14:46:13 +0200
committerPetr Mladek <pmladek@suse.cz>2011-10-24 15:48:27 +0200
commitee26becc4a5690840fd3181b71d293340853b58e (patch)
tree3ab5bd949d4ffb4e258b71a34eb34177a32bdddb
parent4c2b93d96689f62c24ebdb2d4e87ac08d51ed53a (diff)
activation order crashes address database (fdo#41022)
Signed-off-by: Petr Mladek <pmladek@suse.cz>
-rw-r--r--toolkit/source/controls/stdtabcontroller.cxx13
1 files changed, 4 insertions, 9 deletions
diff --git a/toolkit/source/controls/stdtabcontroller.cxx b/toolkit/source/controls/stdtabcontroller.cxx
index d5c2f06ef6..2fecd4dd0e 100644
--- a/toolkit/source/controls/stdtabcontroller.cxx
+++ b/toolkit/source/controls/stdtabcontroller.cxx
@@ -262,6 +262,7 @@ void StdTabController::autoTabOrder( ) throw(RuntimeException)
sal_uInt32 nCtrls = aCompSeq.getLength();
Reference< XWindow > * pComponents = aCompSeq.getArray();
+ // insert sort algorithm
ComponentEntryList aCtrls;
size_t n;
for ( n = 0; n < nCtrls; n++ )
@@ -277,15 +278,9 @@ void StdTabController::autoTabOrder( ) throw(RuntimeException)
for ( nPos = 0; nPos < aCtrls.size(); nPos++ )
{
ComponentEntry* pEntry = aCtrls[ nPos ];
- if ( pEntry->aPos.Y() >= pE->aPos.Y() )
- {
- while ( pEntry && ( pEntry->aPos.Y() == pE->aPos.Y() )
- && ( pEntry->aPos.X() < pE->aPos.X() ) )
- {
- pEntry = aCtrls[ ++nPos ];
- }
- break;
- }
+ if ( ( pEntry->aPos.Y() > pE->aPos.Y() ) ||
+ ( ( pEntry->aPos.Y() == pE->aPos.Y() ) && ( pEntry->aPos.X() > pE->aPos.X() ) ) )
+ break;
}
if ( nPos < aCtrls.size() ) {
ComponentEntryList::iterator it = aCtrls.begin();