Fix segfault in ENFA::eClose

This commit is contained in:
Robin Jadoul 2016-05-10 16:25:03 +02:00
parent e860a68fc9
commit ee6e2f1bae
1 changed files with 4 additions and 2 deletions

View File

@ -1,5 +1,6 @@
#include "Lexesis/automata.h" #include "Lexesis/automata.h"
#include <cassert>
#include <algorithm> #include <algorithm>
#include <climits> #include <climits>
#include <queue> #include <queue>
@ -103,8 +104,9 @@ namespace lxs {
while(!statequeue.empty()) { while(!statequeue.empty()) {
auto state = statequeue.front(); auto state = statequeue.front();
statequeue.pop(); statequeue.pop();
const auto& newStates = epsilonTransitions.find(state)->second; const auto newStatesIt = epsilonTransitions.find(state);
for(auto newstate: newStates) { if (newStatesIt == epsilonTransitions.end()) continue;
for(const auto& newstate: newStatesIt->second) {
if(states.find(newstate) == states.end()) { if(states.find(newstate) == states.end()) {
states.insert(newstate); states.insert(newstate);
statequeue.push(newstate); statequeue.push(newstate);