summaryrefslogtreecommitdiff
path: root/winaccessibility
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-12-12 12:30:53 +0100
committerMichael Stahl <mstahl@redhat.com>2013-12-12 20:06:26 +0100
commitb22e987113374399c7455f7979bc34519eac69da (patch)
tree85cc378e3fa97b9c38d98d4e07820fd3ec50550b /winaccessibility
parent9e351edccf3b9a71bb310bcaefe07821479ff5e5 (diff)
winaccessibility: do not access freed AccObject
The AccObject is stored by value in XIdAccList, so don't call GetResID() after it has been erased. Change-Id: I391aad1e3ab71d443cc6e6b92381f74918e0bcfb
Diffstat (limited to 'winaccessibility')
-rw-r--r--winaccessibility/source/service/AccObjectWinManager.cxx5
1 files changed, 3 insertions, 2 deletions
diff --git a/winaccessibility/source/service/AccObjectWinManager.cxx b/winaccessibility/source/service/AccObjectWinManager.cxx
index 05a64af11536..19653c16c5a8 100644
--- a/winaccessibility/source/service/AccObjectWinManager.cxx
+++ b/winaccessibility/source/service/AccObjectWinManager.cxx
@@ -554,9 +554,10 @@ void AccObjectWinManager::DeleteAccObj( XAccessible* pXAcc )
{
accObj.GetIMAccessible()->Release();
}
- XIdAccList.erase( pXAcc );
- XResIdAccList.erase( accObj.GetResID() );
+ size_t i = XResIdAccList.erase(accObj.GetResID());
+ assert(i != 0);
DeleteFromHwndXAcc(pXAcc);
+ XIdAccList.erase(pXAcc); // note: this invalidates accObj so do it last!
}
/**