From 9f7bb51a9b10e3ec723e1fe2430f081795b57a6d Mon Sep 17 00:00:00 2001 From: Somin Kim Date: Fri, 10 Nov 2017 14:55:29 +0900 Subject: [PATCH] Fix crash issue(erase while iterating std list) - when a requirement is satisfied during ContextDataRead() Change-Id: Iad71212300aaa824e3dab3472268535ae1add16a Signed-off-by: Somin Kim --- src/server/state/ReqVerificationState.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/server/state/ReqVerificationState.cpp b/src/server/state/ReqVerificationState.cpp index a739015..f0dfffc 100644 --- a/src/server/state/ReqVerificationState.cpp +++ b/src/server/state/ReqVerificationState.cpp @@ -50,15 +50,19 @@ bool ReqVerificationState::execute() void ReqVerificationState::contextDataReady(ContextPublisher* pubs, void* userData) { - for (auto it = __reqInfos.begin(); it != __reqInfos.end(); ++it) { - if ((*it).pubs != pubs) + for (auto it = __reqInfos.begin(); it != __reqInfos.end();) { + if ((*it).pubs != pubs) { + ++it; continue; + } - if (!(*((*it).req) <= pubs->getData())) + if (!(*((*it).req) <= pubs->getData())) { + ++it; continue; + } pubs->removeObserver(this); - __reqInfos.erase(it); + __reqInfos.erase(it++); } if (__inspectAll()) -- 2.7.4