SCI: Break out instead of continuing when an end point is contained in multiple polygons, while running the avoidpath algorithm (or we'll end up in an infinite loop). Fixes bug #3036299 - "LB2CD: Game Hangs at Speakeasy"

svn-id: r51450
This commit is contained in:
Filippos Karapetis 2010-07-28 23:30:59 +00:00
parent b3230b26a1
commit c099127c3d

View File

@ -988,8 +988,13 @@ static Common::Point *fixup_end_point(PathfindingState *s, const Common::Point &
if (cont != CONT_OUTSIDE) {
if (s->_appendPoint != NULL) {
// We shouldn't get here twice
// Happens in LB2CD, inside the speakeasy when walking from the
// speakeasy (room 310) into the bathroom (room 320), after having
// consulted the notebook (bug #3036299).
// We need to break in this case, otherwise we'll end in an infinite
// loop.
warning("AvoidPath: end point is contained in multiple polygons");
continue;
break;
}
// The original end position is in an invalid location, so we move the point