mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-25 20:30:26 +00:00
fixed a segfault caused by formula ai self-reference-counting quirks,
...plus removed some accidential whitespace.
This commit is contained in:
parent
8bad423be1
commit
04b7191335
@ -243,6 +243,7 @@ ai_default::ai_default(ai::readwrite_context &context) :
|
||||
recruiting_preferred_(0),
|
||||
formula_ai_(NULL)
|
||||
{
|
||||
add_ref();
|
||||
}
|
||||
|
||||
ai_default::~ai_default(){
|
||||
|
@ -34,7 +34,7 @@ public:
|
||||
set_side(side);
|
||||
}
|
||||
int get_recursion_count() const{
|
||||
return recursion_counter_.get_count();
|
||||
return recursion_counter_.get_count();
|
||||
}
|
||||
private:
|
||||
ai::recursion_counter recursion_counter_;
|
||||
|
@ -101,7 +101,7 @@ namespace dfool {
|
||||
*/
|
||||
class dfool_ai : public ai::readwrite_context_proxy, public ai_interface {
|
||||
public:
|
||||
dfool_ai(ai::readwrite_context &context)
|
||||
dfool_ai(ai::readwrite_context &context)
|
||||
: ai::side_context_proxy(context), ai::readonly_context_proxy(context), ai::readwrite_context_proxy(context), recursion_counter_(context.get_recursion_count()), unit_memory_(current_team().ai_memory()){}
|
||||
void play_turn();
|
||||
virtual std::string describe_self();
|
||||
|
@ -49,19 +49,19 @@ namespace ai {
|
||||
|
||||
int side_context_impl::get_recursion_count() const
|
||||
{
|
||||
return recursion_counter_.get_count();
|
||||
return recursion_counter_.get_count();
|
||||
}
|
||||
|
||||
|
||||
int readonly_context_impl::get_recursion_count() const
|
||||
{
|
||||
return recursion_counter_.get_count();
|
||||
return recursion_counter_.get_count();
|
||||
}
|
||||
|
||||
|
||||
int readwrite_context_impl::get_recursion_count() const
|
||||
{
|
||||
return recursion_counter_.get_count();
|
||||
return recursion_counter_.get_count();
|
||||
}
|
||||
|
||||
|
||||
|
@ -41,7 +41,7 @@ namespace ai {
|
||||
// recursion counter
|
||||
class recursion_counter {
|
||||
public:
|
||||
recursion_counter(int counter)
|
||||
recursion_counter(int counter)
|
||||
: counter_(counter++)
|
||||
{
|
||||
if (counter > MAX_COUNTER_VALUE ) {
|
||||
@ -52,7 +52,7 @@ public:
|
||||
int get_count() const{
|
||||
return counter_;
|
||||
}
|
||||
|
||||
|
||||
static const int MAX_COUNTER_VALUE = 100;//max recursion depth
|
||||
private:
|
||||
int counter_;
|
||||
@ -71,7 +71,6 @@ public:
|
||||
|
||||
virtual side_context& get_side_context() = 0;
|
||||
virtual int get_recursion_count() const = 0;
|
||||
|
||||
};
|
||||
|
||||
class readonly_context;
|
||||
@ -350,7 +349,7 @@ public:
|
||||
/**
|
||||
* Unwrap - this class is not a proxy, so return *this
|
||||
*/
|
||||
virtual readonly_context& get_readonly_context()
|
||||
virtual readonly_context& get_readonly_context()
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
@ -479,7 +478,7 @@ public:
|
||||
/**
|
||||
* Unwrap - this class is not a proxy, so return *this
|
||||
*/
|
||||
virtual readwrite_context& get_readwrite_context()
|
||||
virtual readwrite_context& get_readwrite_context()
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
@ -1623,6 +1623,7 @@ formula_ai::formula_ai(ai::readwrite_context &context) :
|
||||
function_table(*this),
|
||||
candidate_action_manager_()
|
||||
{
|
||||
add_ref();
|
||||
}
|
||||
|
||||
void formula_ai::handle_exception(game_logic::formula_error& e) const
|
||||
|
Loading…
x
Reference in New Issue
Block a user