From a06c4852edb10e38fce19fd2df3833c03b6a15e4 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Fri, 8 May 2015 00:12:09 +0200 Subject: fix crash when converting a group of objects to path (bzr r14121) --- src/path-chemistry.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/path-chemistry.cpp') diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index 8d2695b85..98148b916 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -388,7 +388,9 @@ sp_item_list_to_curves(const std::vector &items, std::vector& if (repr) { to_select.insert(to_select.begin(),repr); did = true; - selected.erase(find(selected.begin(),selected.end(),item)); + std::vector::iterator element=find(selected.begin(),selected.end(),item); + if(element != selected.end()) + selected.erase(find(selected.begin(),selected.end(),item)); } continue; @@ -413,7 +415,9 @@ sp_item_list_to_curves(const std::vector &items, std::vector& continue; did = true; - selected.erase(find(selected.begin(),selected.end(),item)); + std::vector::iterator element=find(selected.begin(),selected.end(),item); + if(element != selected.end()) + selected.erase(element); // remember the position of the item gint pos = item->getRepr()->position(); -- cgit v1.2.3 From fbe59eb1913a779115d9c4769a4066d08e30ff44 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Fri, 8 May 2015 00:25:20 +0200 Subject: better fix, using std::remove instead of std::erase (bzr r14122) --- src/path-chemistry.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'src/path-chemistry.cpp') diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index 98148b916..ff307cd66 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -388,9 +388,7 @@ sp_item_list_to_curves(const std::vector &items, std::vector& if (repr) { to_select.insert(to_select.begin(),repr); did = true; - std::vector::iterator element=find(selected.begin(),selected.end(),item); - if(element != selected.end()) - selected.erase(find(selected.begin(),selected.end(),item)); + remove(selected.begin(),selected.end(),item); } continue; @@ -415,9 +413,7 @@ sp_item_list_to_curves(const std::vector &items, std::vector& continue; did = true; - std::vector::iterator element=find(selected.begin(),selected.end(),item); - if(element != selected.end()) - selected.erase(element); + remove(selected.begin(),selected.end(),item); // remember the position of the item gint pos = item->getRepr()->position(); -- cgit v1.2.3 From 57808dd1abe86ae0088a74bd88041321f5df5fb8 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Fri, 8 May 2015 00:45:15 +0200 Subject: fix for stl "remove" (bzr r14123) --- src/path-chemistry.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/path-chemistry.cpp') diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index ff307cd66..7bd5b6298 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -388,7 +388,7 @@ sp_item_list_to_curves(const std::vector &items, std::vector& if (repr) { to_select.insert(to_select.begin(),repr); did = true; - remove(selected.begin(),selected.end(),item); + selected.erase(remove(selected.begin(), selected.end(), item), selected.end()); } continue; @@ -413,7 +413,7 @@ sp_item_list_to_curves(const std::vector &items, std::vector& continue; did = true; - remove(selected.begin(),selected.end(),item); + selected.erase(remove(selected.begin(), selected.end(), item), selected.end()); // remember the position of the item gint pos = item->getRepr()->position(); -- cgit v1.2.3