From c0ed8a98f4db3578abf82ad40e651f3774dfbc31 Mon Sep 17 00:00:00 2001 From: Marco Miozzo Date: Fri, 20 Jan 2012 16:26:55 +0100 Subject: [PATCH] Soved valgrind error on CQI updates in RR and PF schedulers --- src/lte/model/pf-ff-mac-scheduler.cc | 18 ++++++++++++------ src/lte/model/rr-ff-mac-scheduler.cc | 12 ++++++++---- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/lte/model/pf-ff-mac-scheduler.cc b/src/lte/model/pf-ff-mac-scheduler.cc index 44895e851..d5392f31e 100644 --- a/src/lte/model/pf-ff-mac-scheduler.cc +++ b/src/lte/model/pf-ff-mac-scheduler.cc @@ -1060,13 +1060,15 @@ PfFfMacScheduler::RefreshDlCqiMaps(void) NS_ASSERT_MSG (itMap != m_p10CqiRxed.end (), " Does not find CQI report for user " << (*itP10).first); NS_LOG_INFO (this << " P10-CQI exired for user " << (*itP10).first); m_p10CqiRxed.erase (itMap); - m_p10CqiTimers.erase (itP10); + std::map ::iterator temp = itP10; + itP10++; + m_p10CqiTimers.erase (temp); } else { (*itP10).second--; + itP10++; } - itP10++; } // refresh DL CQI A30 Map @@ -1081,13 +1083,15 @@ PfFfMacScheduler::RefreshDlCqiMaps(void) NS_ASSERT_MSG (itMap != m_a30CqiRxed.end (), " Does not find CQI report for user " << (*itA30).first); NS_LOG_INFO (this << " A30-CQI exired for user " << (*itA30).first); m_a30CqiRxed.erase (itMap); - m_a30CqiTimers.erase (itA30); + std::map ::iterator temp = itA30; + itA30++; + m_a30CqiTimers.erase (temp); } else { (*itA30).second--; + itA30++; } - itA30++; } return; @@ -1110,13 +1114,15 @@ PfFfMacScheduler::RefreshUlCqiMaps(void) NS_LOG_INFO (this << " UL-CQI exired for user " << (*itUl).first); (*itMap).second.clear (); m_ueCqi.erase (itMap); - m_ueCqiTimers.erase (itUl); + std::map ::iterator temp = itUl; + itUl++; + m_ueCqiTimers.erase (temp); } else { (*itUl).second--; + itUl++; } - itUl++; } return; diff --git a/src/lte/model/rr-ff-mac-scheduler.cc b/src/lte/model/rr-ff-mac-scheduler.cc index 6df82fcf4..365b80665 100644 --- a/src/lte/model/rr-ff-mac-scheduler.cc +++ b/src/lte/model/rr-ff-mac-scheduler.cc @@ -915,13 +915,15 @@ RrFfMacScheduler::RefreshDlCqiMaps(void) NS_ASSERT_MSG (itMap != m_p10CqiRxed.end (), " Does not find CQI report for user " << (*itP10).first); NS_LOG_INFO (this << " P10-CQI exired for user " << (*itP10).first); m_p10CqiRxed.erase (itMap); - m_p10CqiTimers.erase (itP10); + std::map ::iterator temp = itP10; + itP10++; + m_p10CqiTimers.erase (temp); } else { (*itP10).second--; + itP10++; } - itP10++; } return; @@ -944,13 +946,15 @@ RrFfMacScheduler::RefreshUlCqiMaps(void) NS_LOG_INFO (this << " UL-CQI exired for user " << (*itUl).first); (*itMap).second.clear (); m_ueCqi.erase (itMap); - m_ueCqiTimers.erase (itUl); + std::map ::iterator temp = itUl; + itUl++; + m_ueCqiTimers.erase (temp); } else { (*itUl).second--; + itUl++; } - itUl++; } return;