Fixed and pushed.
On a side note - it turns out that the return value of step() from the main
search is never checked (the only value that matters is IN_PROGRESS. Once it
finishes, nobody checks if it SOLVED or FAILED).
This logic looks wrong:
int IteratedSearch::step() {
current_search = create_phase(phase);
if (current_search == NULL) {
return (last_phase_found_solution) ? SOLVED : FAILED;
}
...
}
What if the last phase didn't find a solution but a previous one did? Then the
iterated search overall did find a solution. This should return SOLVED iff any
plan was found.