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 <cassert>
#include <algorithm>
#include <climits>
#include <queue>
@ -103,8 +104,9 @@ namespace lxs {
while(!statequeue.empty()) {
auto state = statequeue.front();
statequeue.pop();
const auto& newStates = epsilonTransitions.find(state)->second;
for(auto newstate: newStates) {
const auto newStatesIt = epsilonTransitions.find(state);
if (newStatesIt == epsilonTransitions.end()) continue;
for(const auto& newstate: newStatesIt->second) {
if(states.find(newstate) == states.end()) {
states.insert(newstate);
statequeue.push(newstate);