From b22e987113374399c7455f7979bc34519eac69da Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Thu, 12 Dec 2013 12:30:53 +0100 Subject: 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 --- winaccessibility/source/service/AccObjectWinManager.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'winaccessibility/source/service/AccObjectWinManager.cxx') 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! } /** -- cgit