diff options
Diffstat (limited to 'crawl-ref')
-rw-r--r-- | crawl-ref/source/los.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/crawl-ref/source/los.cc b/crawl-ref/source/los.cc index 4fa567d091..b30bac7249 100644 --- a/crawl-ref/source/los.cc +++ b/crawl-ref/source/los.cc @@ -274,8 +274,9 @@ static std::vector<int> _find_minimal_cellrays() cellray c(ray, i); std::list<cellray>& min = minima(c.end()); + bool erased = false; for (min_it = min.begin(); - min_it != min.end() && !dup; min_it++) + min_it != min.end() && !dup; ) { switch(_compare_cellrays(*min_it, c)) { @@ -284,6 +285,7 @@ static std::vector<int> _find_minimal_cellrays() break; case C_SUPERRAY: min_it = min.erase(min_it); + erased = true; // clear this should be added, but might have // to erase more break; @@ -291,6 +293,10 @@ static std::vector<int> _find_minimal_cellrays() default: break; } + if (!erased) + min_it++; + else + erased = false; } if (!dup) min.push_back(c); |