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.
wip-string
SamuXarick 6 months ago committed by GitHub
parent 8ab3838387
commit c05ffb22bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -301,4 +301,7 @@ void AyStar::Init(Hash_HashProc hash, uint num_buckets)
* 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;
}

@ -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.

@ -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;

@ -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

Loading…
Cancel
Save