diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-12-12 12:30:53 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-12-12 20:06:26 +0100 |
commit | b22e987113374399c7455f7979bc34519eac69da (patch) | |
tree | 85cc378e3fa97b9c38d98d4e07820fd3ec50550b /winaccessibility/source | |
parent | 9e351edccf3b9a71bb310bcaefe07821479ff5e5 (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/source')
-rw-r--r-- | winaccessibility/source/service/AccObjectWinManager.cxx | 5 |
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! } /** |