GeoEngine infinite loop precautions and cleanup.
This commit is contained in:
		@@ -841,7 +841,8 @@ public class GeoEngine
 | 
			
		||||
		int ny = gpy;
 | 
			
		||||
		
 | 
			
		||||
		// loop
 | 
			
		||||
		do
 | 
			
		||||
		int count = 0;
 | 
			
		||||
		while (count++ < Config.MAX_ITERATIONS)
 | 
			
		||||
		{
 | 
			
		||||
			direction = 0;
 | 
			
		||||
			
 | 
			
		||||
@@ -892,7 +893,8 @@ public class GeoEngine
 | 
			
		||||
				return new GeoLocation(gox, goy, goz);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		while (true);
 | 
			
		||||
		
 | 
			
		||||
		return new GeoLocation(gox, goy, goz);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
@@ -135,7 +135,8 @@ final class GeoEnginePathfinding extends GeoEngine
 | 
			
		||||
		GeoLocation nodeB = (GeoLocation) point.next();
 | 
			
		||||
		
 | 
			
		||||
		// iterate thought the path to optimize it
 | 
			
		||||
		while (point.hasNext())
 | 
			
		||||
		int count = 0;
 | 
			
		||||
		while (point.hasNext() && (count++ < Config.MAX_ITERATIONS))
 | 
			
		||||
		{
 | 
			
		||||
			// get node C
 | 
			
		||||
			GeoLocation nodeC = (GeoLocation) path.get(point.nextIndex());
 | 
			
		||||
@@ -184,7 +185,8 @@ final class GeoEnginePathfinding extends GeoEngine
 | 
			
		||||
		Node parent = target.getParent();
 | 
			
		||||
		
 | 
			
		||||
		// while parent exists
 | 
			
		||||
		while (parent != null)
 | 
			
		||||
		int count = 0;
 | 
			
		||||
		while ((parent != null) && (count++ < Config.MAX_ITERATIONS))
 | 
			
		||||
		{
 | 
			
		||||
			// get parent <> target direction X/Y
 | 
			
		||||
			final int nx = parent.getLoc().getGeoX() - target.getLoc().getGeoX();
 | 
			
		||||
 
 | 
			
		||||
@@ -39,10 +39,6 @@ public class NodeBuffer
 | 
			
		||||
	private int _gty = 0;
 | 
			
		||||
	private short _gtz = 0;
 | 
			
		||||
	
 | 
			
		||||
	// pathfinding statistics
 | 
			
		||||
	private long _timeStamp = 0;
 | 
			
		||||
	private long _lastElapsedTime = 0;
 | 
			
		||||
	
 | 
			
		||||
	private Node _current = null;
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
@@ -77,9 +73,6 @@ public class NodeBuffer
 | 
			
		||||
	 */
 | 
			
		||||
	public final Node findPath(int gox, int goy, short goz, int gtx, int gty, short gtz)
 | 
			
		||||
	{
 | 
			
		||||
		// load timestamp
 | 
			
		||||
		_timeStamp = System.currentTimeMillis();
 | 
			
		||||
		
 | 
			
		||||
		// set coordinates (middle of the line (gox,goy) - (gtx,gty), will be in the center of the buffer)
 | 
			
		||||
		_cx = gox + ((gtx - gox - _size) / 2);
 | 
			
		||||
		_cy = goy + ((gty - goy - _size) / 2);
 | 
			
		||||
@@ -106,7 +99,7 @@ public class NodeBuffer
 | 
			
		||||
			// move pointer
 | 
			
		||||
			_current = _current.getChild();
 | 
			
		||||
		}
 | 
			
		||||
		while ((_current != null) && (++count < Config.MAX_ITERATIONS));
 | 
			
		||||
		while ((_current != null) && (count++ < Config.MAX_ITERATIONS));
 | 
			
		||||
		
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
@@ -132,12 +125,6 @@ public class NodeBuffer
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		_lock.unlock();
 | 
			
		||||
		_lastElapsedTime = System.currentTimeMillis() - _timeStamp;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public final long getElapsedTime()
 | 
			
		||||
	{
 | 
			
		||||
		return _lastElapsedTime;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user