Changeset - r28302:b4068fa1355c
[Not reviewed]
master
0 4 0
SamuXarick - 6 months ago 2023-12-17 21:50:53
43006711+SamuXarick@users.noreply.github.com
Fix #10452: Don't let AyStar max_search_nodes unattended when initializing (#11544)

Add a constant with the default value of 10000 and have the pathfinding settings refer to it.

Add a preventative method to AyStar when it's initializing, to limit the number of max_search_nodes if left unattended.
4 files changed with 8 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/pathfinder/npf/aystar.cpp
Show inline comments
 
@@ -301,4 +301,7 @@ void AyStar::Init(Hash_HashProc hash, ui
 
	 *  When that one gets full it reserves another one, till this number
 
	 *  That is why it can stay this high */
 
	this->openlist_queue.Init(102400);
 

	
 
	/* Set a reasonable default limit */
 
	this->max_search_nodes = AYSTAR_DEF_MAX_SEARCH_NODES;
 
}
src/pathfinder/npf/aystar.h
Show inline comments
 
@@ -20,6 +20,8 @@
 
#include "../../tile_type.h"
 
#include "../../track_type.h"
 

	
 
static const int AYSTAR_DEF_MAX_SEARCH_NODES = 10000; ///< Reference limit for #AyStar::max_search_nodes
 

	
 
/** Return status of #AyStar methods. */
 
enum AystarStatus {
 
	AYSTAR_FOUND_END_NODE, ///< An end node was found.
src/pathfinder/pathfinder_type.h
Show inline comments
 
@@ -11,6 +11,7 @@
 
#define PATHFINDER_TYPE_H
 

	
 
#include "../tile_type.h"
 
#include "npf/aystar.h"
 

	
 
/** Length (penalty) of one tile with NPF */
 
static const int NPF_TILE_LENGTH = 100;
src/table/settings/pathfinding_settings.ini
Show inline comments
 
@@ -168,7 +168,7 @@ cat      = SC_EXPERT
 
[SDT_VAR]
 
var      = pf.npf.npf_max_search_nodes
 
type     = SLE_UINT
 
def      = 10000
 
def      = AYSTAR_DEF_MAX_SEARCH_NODES
 
min      = 500
 
max      = 100000
 
cat      = SC_EXPERT
 
@@ -325,7 +325,7 @@ cat      = SC_EXPERT
 
var      = pf.yapf.max_search_nodes
 
type     = SLE_UINT
 
from     = SLV_28
 
def      = 10000
 
def      = AYSTAR_DEF_MAX_SEARCH_NODES
 
min      = 500
 
max      = 1000000
 
cat      = SC_EXPERT
0 comments (0 inline, 0 general)