From 43477be0cc9f2b385a8da1890a3a8586360f94e4 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Fri, 5 Sep 2014 19:10:24 +0200
Subject: [PATCH] fix no initial state is useless

---
 alib2algo/src/trim/automaton/TrimFSM.cpp | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/alib2algo/src/trim/automaton/TrimFSM.cpp b/alib2algo/src/trim/automaton/TrimFSM.cpp
index 9022f7be90..c1ab247461 100644
--- a/alib2algo/src/trim/automaton/TrimFSM.cpp
+++ b/alib2algo/src/trim/automaton/TrimFSM.cpp
@@ -16,6 +16,10 @@
 
 #include "../../automaton/AutomatonPropertiesFSM.h"
 
+#include "automaton/common/State.h"
+#include "label/Label.h"
+#include "label/IntegerLabel.h"
+
 namespace trim {
 
 template<class T>
@@ -26,6 +30,12 @@ T TrimFSM::removeUselessStates( const T & fsm ) {
 	// 2.
 	T M;
 
+	if(Qu.size() == 0) {
+		M.addState(automaton::State(label::Label(label::IntegerLabel(1))));
+		M.addInitialState(automaton::State(label::Label(label::IntegerLabel(1))));
+		return M;
+	}
+
 	for( const auto & q : Qu )
 		M.addState( q );
 
@@ -57,6 +67,11 @@ automaton::DFA TrimFSM::removeUselessStates( const automaton::DFA & fsm ) {
 	std::set<automaton::State> Qu = automaton::AutomatonPropertiesFSM::getUsefullStates( fsm );
 
 	// 2.
+	if(Qu.size() == 0) {
+		automaton::DFA M (automaton::State(label::Label(label::IntegerLabel(1))));
+		return M;
+	}
+
 	automaton::DFA M ( fsm.getInitialState () );
 
 	for( const auto & q : Qu )
-- 
GitLab