]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: fix missing increment of iterators 8352/head
authorrunsisi <runsisi@hust.edu.cn>
Tue, 29 Mar 2016 12:26:21 +0000 (20:26 +0800)
committerrunsisi <runsisi@hust.edu.cn>
Wed, 30 Mar 2016 02:34:26 +0000 (10:34 +0800)
Signed-off-by: runsisi <runsisi@hust.edu.cn>
src/tools/rbd_mirror/Replayer.cc

index 234a19cd1cb7137efd2d4e7d5507574cb64664c1..ce76f99a57ee9870537b51e636aa370c4512f5a0 100644 (file)
@@ -274,11 +274,15 @@ void Replayer::set_sources(const PoolImageIds &pool_image_ids)
       for (auto images_it = pool_images.begin();
           images_it != pool_images.end();) {
        if (stop_image_replayer(images_it->second)) {
-         pool_images.erase(images_it++);
-       }
+         images_it = pool_images.erase(images_it);
+       } else {
+          ++images_it;
+        }
       }
       if (pool_images.empty()) {
-       m_images.erase(it++);
+       it = m_images.erase(it);
+      } else {
+        ++it;
       }
       continue;
     }
@@ -289,7 +293,9 @@ void Replayer::set_sources(const PoolImageIds &pool_image_ids)
       auto &image_ids = pool_image_ids.at(pool_id);
       if (image_ids.find(ImageIds(images_it->first)) == image_ids.end()) {
        if (stop_image_replayer(images_it->second)) {
-         pool_images.erase(images_it++);
+         images_it = pool_images.erase(images_it);
+       } else {
+         ++images_it;
        }
       } else {
        ++images_it;