diff --git a/src/arm_designer.cpp b/src/arm_designer.cpp
index 0ceaea7383dc745b07e107160e1692badd001638..da633aac4b9ce3a906c19bb8d81fee0c0db9b344 100644
--- a/src/arm_designer.cpp
+++ b/src/arm_designer.cpp
@@ -779,7 +779,7 @@ bool ArmDesigner::input_handle_() {
 				ESC	Clear selection
 			*/
 			if (event.key.keysym.sym == SDLK_m) {//m
-				if (selected_nodes_[0].first == 0) {
+				if (selected_nodes_.size() == 0 || selected_nodes_[0].first == 0) {
 					gui_params_.log_messages.push_back("Sketch segment doesn't allow midpointing.");
 					continue;
 				}
@@ -1017,6 +1017,9 @@ std::tuple<size_t, size_t, size_t, float> ArmDesigner::find_closest_seg_line_dis
 			continue;
 		}
 		auto nodes = segs[i].nodes();
+		if (nodes.size() == 0) {//fix segmentation fault
+			continue;
+		}
 		for (size_t k = 0; k < nodes.size()-1; ++k){
 			/*Find direction and normal vector of line*/
 			std::array<float, 2> dirv { nodes[k+1][0] - nodes[k][0], nodes[k+1][1] - nodes[k][1] }; //rg