diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-12-12 12:30:53 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-12-13 19:47:43 +0100 |
commit | 3ba417fe93fd25d1a4c2f3d1cd368e9bd93882d4 (patch) | |
tree | f89354231eccc5aba53be3994ad7cf1380ae2c96 /winaccessibility | |
parent | 04be39ce96a8f17db150076cee5e87a594fc0505 (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
(cherry picked from commit b22e987113374399c7455f7979bc34519eac69da)
Diffstat (limited to 'winaccessibility')
-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 8559e2b65782..bb9434a40508 100644 --- a/winaccessibility/source/service/AccObjectWinManager.cxx +++ b/winaccessibility/source/service/AccObjectWinManager.cxx @@ -556,9 +556,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! } /** |