From fcf50e1eafee305e3f0bd34064f988a2ac8f5e5d Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期一, 24 八月 2020 16:32:40 +0800
Subject: [PATCH] modify iterator

---
 test/test_right_walk3   |    0 
 test/test_right_walk3.c |    2 +-
 algorithm/IndirectAlg.c |   11 +++++++----
 test/test_right_walk    |    0 
 Make.defines.linux      |    2 +-
 5 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/Make.defines.linux b/Make.defines.linux
index d8c4263..60bde91 100755
--- a/Make.defines.linux
+++ b/Make.defines.linux
@@ -9,7 +9,7 @@
 LDFLAGS=
 
 
-CFLAGS = $(INCLUDE) -I. -I./include -I$(ROOT)/common -std=c++11 -mcx16 -Wall  -DLINUX -D_GNU_SOURCE $(EXTRA)
+CFLAGS = $(INCLUDE) -I. -I./include -I$(ROOT)/common -I$(ROOT)/common/include -g -std=c++11 -mcx16 -Wall  -DLINUX -D_GNU_SOURCE $(EXTRA)
 
 ifeq ($(pic),y)
 	CFLAGS += -fPIC 
diff --git a/algorithm/IndirectAlg.c b/algorithm/IndirectAlg.c
index 69640eb..f9a3d51 100644
--- a/algorithm/IndirectAlg.c
+++ b/algorithm/IndirectAlg.c
@@ -81,18 +81,21 @@
     while (!mterminate.load()) {
         std::this_thread::sleep_for(std::chrono::seconds(this->keepTime * 2));
         //sleep(this->keepTime);
-        for(iter = statusMap.begin(); iter != statusMap.end(); iter++) {
+        for(iter = statusMap.begin(); iter != statusMap.end();) {
           
             status = iter->second;
             if (status != nullptr) {
                 // cout<< "iter " << iter->first <<' '<< iter->second <<  status->lastTime << endl; 
                // printf("%ld, %ld, %ld\n", time(NULL), status->lastTime, (time(0) - status->lastTime));
-                if(difftime(time(NULL), status->lastTime) > this->keepTime*2) {
+                if(difftime(time(NULL), status->lastTime) > this->keepTime * 2) {
                     std::cout << status->id << "鑴辩鐩戞帶鍖�, remove from map\n";
                     delete status;
-                    statusMap.erase(iter);
-                }
+
+                    iter = statusMap.erase(iter);
+                    continue;
+                }  
             }
+            iter++;
         }
     }
      
diff --git a/test/test_right_walk b/test/test_right_walk
index bf4aa5a..6ce46f0 100755
--- a/test/test_right_walk
+++ b/test/test_right_walk
Binary files differ
diff --git a/test/test_right_walk3 b/test/test_right_walk3
index 9f0a3eb..245a40d 100755
--- a/test/test_right_walk3
+++ b/test/test_right_walk3
Binary files differ
diff --git a/test/test_right_walk3.c b/test/test_right_walk3.c
index 31ca7ff..9b97b1c 100644
--- a/test/test_right_walk3.c
+++ b/test/test_right_walk3.c
@@ -94,7 +94,7 @@
 
 void test3() {
 
-    std::ifstream fin("test2.txt");
+    std::ifstream fin("test3.txt");
     char line[1024];
     //std::string line;
     char *targetIdStr;

--
Gitblit v1.8.0