diff --git a/source/blender/bmesh/tools/bmesh_path.c b/source/blender/bmesh/tools/bmesh_path.c
index 9fc1996e51aa62331ed4d33c730966709640f612..060d0dd969b2c711c58fb25118dfc78ebc62d87e 100644
--- a/source/blender/bmesh/tools/bmesh_path.c
+++ b/source/blender/bmesh/tools/bmesh_path.c
@@ -193,6 +193,14 @@ static void edgetag_add_adjacent(Heap *heap, BMEdge *e1, BMEdge **edges_prev, fl
 	const int e1_index = BM_elem_index_get(e1);
 
 	BM_ITER_ELEM (v, &viter, e1, BM_VERTS_OF_EDGE) {
+
+		/* don't walk over previous vertex */
+		if ((edges_prev[e1_index]) &&
+		    (BM_vert_in_edge(edges_prev[e1_index], v)))
+		{
+			continue;
+		}
+
 		BM_ITER_ELEM (e2, &eiter, v, BM_EDGES_OF_VERT) {
 			if (!BM_elem_flag_test(e2, BM_ELEM_TAG)) {
 				/* we know 'e2' is not visited, check it out! */