From 68ba813f29145980aae29899fc4fff7a9b476a9d Mon Sep 17 00:00:00 2001 From: Glenn Miles Date: Fri, 11 Oct 2019 13:52:14 -0500 Subject: [PATCH] Fix invalid use of vector iterator Once an element of a vector is erased using an iterator, that iterator should be considered invalid and not used. The accepted practice is to update the iterator with the return value of the erase method and not to increment the iterator. CQ: SW465848 Change-Id: If6ec7887d8c2b6c6ad44a9608c474b9c118bd117 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/85220 Reviewed-by: Zachary Clark Reviewed-by: Michael Baiocchi Reviewed-by: Daniel M Crowell Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Nicholas E Bofferding --- src/usr/initservice/baseinitsvc/initservice.C | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/usr/initservice/baseinitsvc/initservice.C b/src/usr/initservice/baseinitsvc/initservice.C index d06b36f6ab6..acd70bb4251 100644 --- a/src/usr/initservice/baseinitsvc/initservice.C +++ b/src/usr/initservice/baseinitsvc/initservice.C @@ -1060,8 +1060,7 @@ bool InitService::unregisterShutdownEvent(msg_q_t i_msgQ) { for(EventRegistry_t::iterator r = iv_regMsgQ.begin(); - r != iv_regMsgQ.end(); - ++r) + r != iv_regMsgQ.end();) { // erase all instances if(r->msgQ == i_msgQ) @@ -1072,7 +1071,11 @@ bool InitService::unregisterShutdownEvent(msg_q_t i_msgQ) r->compID, r->msgQ, r->msgType, r->msgPriority); result = true; - iv_regMsgQ.erase(r); + r = iv_regMsgQ.erase(r); + } + else + { + ++r; } } }