From: Somin Kim Date: Fri, 10 Nov 2017 05:55:29 +0000 (+0900) Subject: Fix crash issue(erase while iterating std list) X-Git-Tag: submit/tizen_4.0/20171114.081728^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Fdevel%2Ftizen;p=platform%2Fcore%2Fcontext%2Fjob-scheduler.git Fix crash issue(erase while iterating std list) - when a requirement is satisfied during ContextDataRead() Change-Id: Iad71212300aaa824e3dab3472268535ae1add16a Signed-off-by: Somin Kim --- 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())