URL:
<http://gna.org/bugs/?18821>
Summary: [kill]$this_unit.hitpoints doesn't work for recall
list units
Project: Battle for Wesnoth
Submitted by: anonymissimus
Submitted on: Di 18 Okt 2011 20:30:46 GMT
Category: Bug
Severity: 3 - Normal
Priority: 5 - Normal
Item Group: None of the others
Status: None
Privacy: Public
Assigned to: None
Originator Email:
Open/Closed: Open
Discussion Lock: Any
Release: trunk r51534, 1.9.8
Operating System: win xp
_______________________________________________________
Details:
This reproduces:
++
wesnoth.wml_actions.unit({ type = "Troll", hitpoints = 2 })
wesnoth.wml_actions.kill({ level = "$this_unit.hitpoints" })
--
The Troll isn't killed but clearly should.
IIRC this is present since long, I seem to recall I hit it when testing
r46234. There seems to be some serious flaw with the scoped_recall_unit
implementation. The VS debugger crashes instead of just not woking:
>
> wesnoth.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,config::attribute_value,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const ,config::attribute_value> >,0> >::_Copy(const
std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,config::attribute_value,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const ,config::attribute_value> >,0> > & _Right={...}) Zeile 1063 + 0xf
Bytes C++
wesnoth.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,config::attribute_value,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const ,config::attribute_value> >,0>
>::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,config::attribute_value,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const ,config::attribute_value> >,0> >(const
std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,config::attribute_value,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const ,config::attribute_value> >,0> > & _Right={...}) Zeile 531 + 0xc
Bytes C++
wesnoth.exe!std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,config::attribute_value,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const ,config::attribute_value> >
>::map<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,config::attribute_value,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const ,config::attribute_value> > >(const
std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,config::attribute_value,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> const ,config::attribute_value> > > & __that=[4277075694](...)) + 0x2f
Bytes C++
wesnoth.exe!config::config(const config & cfg={...}) Zeile 186 + 0x4e
Bytes C++
wesnoth.exe!config::add_child(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
key="this_unit", const config & val={...}) Zeile 388 + 0x2f Bytes C++
wesnoth.exe!game_state::add_variable_cfg(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
key="this_unit", const config & value={...}) Zeile 495 + 0x10 Bytes C++
wesnoth.exe!scoped_wml_variable::store(const config & var_value={...})
Zeile 482 + 0x16 Bytes C++
wesnoth.exe!scoped_recall_unit::activate() Zeile 541 C++
wesnoth.exe!`anonymous
namespace'::activate_scope_variable(std::basic_string<char,std::char_traits<char>,std::allocator<char>
> var_name="this_unit") Zeile 567 + 0x25 Bytes C++
wesnoth.exe!variable_info::variable_info(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
varname="this_unit.hitpoints", bool force_valid=false, variable_info::TYPE
validation_type=TYPE_SCALAR) Zeile 586 + 0x29 Bytes C++
wesnoth.exe!game_state::get_variable_const(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
key="this_unit.hitpoints") Zeile 469 + 0x10 Bytes C++
wesnoth.exe!do_interpolation(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
str="$this_unit.hitpoints", const variable_set & set={...}) Zeile 186 + 0x1d
Bytes C++
wesnoth.exe!utils::interpolate_variables_into_string(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
str="$this_unit.hitpoints", const variable_set & variables={...}) Zeile 203 +
0x11 Bytes C++
wesnoth.exe!vconfig_expand_visitor::operator()(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
s="$this_unit.hitpoints") Zeile 359 + 0x16 Bytes C++
wesnoth.exe!boost::detail::variant::invoke_visitor<vconfig_expand_visitor
const
>::internal_visit<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> >(std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
operand="$this_unit.hitpoints", int __formal=1) Zeile 826 C++
wesnoth.exe!boost::detail::variant::visitation_impl_invoke_impl<boost::detail::variant::invoke_visitor<vconfig_expand_visitor
const >,void
*,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >(int
__formal=3, boost::detail::variant::invoke_visitor<vconfig_expand_visitor
const > & visitor={...}, void * storage=0x0011f518, int __formal=3, int
__formal=3) Zeile 127 C++
wesnoth.exe!boost::detail::variant::visitation_impl_invoke<boost::detail::variant::invoke_visitor<vconfig_expand_visitor
const >,void
*,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,boost::variant<boost::blank,bool,double,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,t_string,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>::has_fallback_type_>(int
internal_which=3,
boost::detail::variant::invoke_visitor<vconfig_expand_visitor const > &
visitor={...}, void * storage=0x0011f518,
std::basic_string<char,std::char_traits<char>,std::allocator<char> > *
t=0x00000000,
boost::variant<boost::blank,bool,double,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,t_string,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>::has_fallback_type_
__formal={...},
boost::variant<boost::blank,bool,double,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,t_string,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>::has_fallback_type_
__formal={...}) Zeile 169 + 0x25 Bytes C++
wesnoth.exe!boost::detail::variant::visitation_impl<boost::mpl::int_<0>,boost::detail::variant::visitation_impl_step<boost::mpl::l_iter<boost::mpl::l_item<boost::mpl::long_<5>,boost::blank,boost::mpl::l_item<boost::mpl::long_<4>,bool,boost::mpl::l_item<boost::mpl::long_<3>,double,boost::mpl::l_item<boost::mpl::long_<2>,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,boost::mpl::l_item<boost::mpl::long_<1>,t_string,boost::mpl::l_end> > > > >
>,boost::mpl::l_iter<boost::mpl::l_end>
>,boost::detail::variant::invoke_visitor<vconfig_expand_visitor const >,void
*,boost::variant<boost::blank,bool,double,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,t_string,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>::has_fallback_type_>(const
int internal_which=3, const int logical_which=3,
boost::detail::variant::invoke_visitor<vconfig_expand_visitor const > &
visitor={...}, void * storage=0x0011f518, boost::mpl::bool_<0> __formal={...},
boost::variant<boost::blank,bool,double,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,t_string,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>::has_fallback_type_
no_backup_flag={...}, boost::mpl::bool_<0> __formal={...},
boost::mpl::bool_<0> __formal={...}) Zeile 252 + 0x80 Bytes C++
wesnoth.exe!boost::variant<boost::blank,bool,double,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,t_string,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>::internal_apply_visitor_impl<boost::detail::variant::invoke_visitor<vconfig_expand_visitor
const >,void *>(int internal_which=3, int logical_which=3,
boost::detail::variant::invoke_visitor<vconfig_expand_visitor const > &
visitor={...}, void * storage=0x0011f518) Zeile 1769 + 0x31 Bytes C++
wesnoth.exe!boost::variant<boost::blank,bool,double,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,t_string,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>::internal_apply_visitor<boost::detail::variant::invoke_visitor<vconfig_expand_visitor
const > >(boost::detail::variant::invoke_visitor<vconfig_expand_visitor const
> & visitor={...}) Zeile 1780 + 0x24 Bytes C++
wesnoth.exe!boost::variant<boost::blank,bool,double,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,t_string,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>::apply_visitor<vconfig_expand_visitor
const >(const vconfig_expand_visitor & visitor={...}) Zeile 1804 C++
wesnoth.exe!boost::apply_visitor<vconfig_expand_visitor,boost::variant<boost::blank,bool,double,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,t_string,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>
>(const vconfig_expand_visitor & visitor={...},
boost::variant<boost::blank,bool,double,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,t_string,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_,boost::detail::variant::void_>
& visitable={...}) Zeile 73 C++
wesnoth.exe!vconfig::expand(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
key="level") Zeile 371 + 0x35 Bytes C++
wesnoth.exe!vconfig::operator[](const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
key="level") Zeile 81 + 0x3d Bytes C++
wesnoth.exe!unit::internal_matches_filter(const vconfig & cfg={...},
const
map_location & loc={...}, bool use_flat_tod=false) Zeile 1416 + 0x34
Bytes C++
wesnoth.exe!unit::matches_filter(const vconfig & cfg={...}, const
map_location & loc={...}, bool use_flat_tod=false) Zeile 1216 + 0x15
Bytes C++
wesnoth.exe!wml_func_kill(const game_events::queued_event &
event_info={...}, const vconfig & cfg={...}) Zeile 2055 + 0x24 Bytes C++
wesnoth.exe!cfun_wml_action(lua_State * L=0x05e0a6c8) Zeile 3850 + 0xf
Bytes C++
wesnoth.exe!luaD_precall() + 0x311 Bytes
wesnoth.exe!luaV_execute() + 0x163d Bytes
wesnoth.exe!luaD_call() + 0xa1 Bytes
wesnoth.exe!lua_pcall() + 0x16a Bytes
wesnoth.exe!luaD_rawrunprotected() + 0x72 Bytes
wesnoth.exe!luaD_pcall() + 0x64 Bytes
wesnoth.exe!lua_pcall() + 0x86 Bytes
wesnoth.exe!luaW_pcall(lua_State * L=0x05e0a6c8, int nArgs=1, int
nRets=0,
bool allow_wml_error=true) Zeile 447 + 0x1a Bytes C++
wesnoth.exe!LuaKernel::run_wml_action(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
cmd="command", const vconfig & cfg={...}, const game_events::queued_event &
ev={...}) Zeile 3888 + 0xf Bytes C++
wesnoth.exe!game_events::handle_event_commands(const
game_events::queued_event & event_info={...}, const vconfig & cfg={...})
Zeile 3080 + 0x3b Bytes C++
wesnoth.exe!game_events::event_handler::handle_event(const
game_events::queued_event & event_info={...}) Zeile 3075 + 0x3d Bytes C++
wesnoth.exe!process_event(game_events::event_handler & handler={...},
const
game_events::queued_event & ev={...}) Zeile 3041 C++
wesnoth.exe!game_events::pump() Zeile 3396 + 0x13 Bytes C++
wesnoth.exe!game_events::fire(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> > &
event="menu item execute_lua", const game_events::entity_location &
loc1={...}, const game_events::entity_location & loc2={...}, const config &
data={...}) Zeile 3311 C++
wesnoth.exe!play_controller::execute_command(hotkey::HOTKEY_COMMAND
command=HOTKEY_NULL, int index=0) Zeile 768 + 0x76 Bytes C++
wesnoth.exe!hotkey::execute_command(display & disp={...},
hotkey::HOTKEY_COMMAND command=HOTKEY_NULL, hotkey::command_executor *
executor=0x00129c60, int index=0) Zeile 1151 + 0x42 Bytes C++
wesnoth.exe!hotkey::command_executor::show_menu(const
std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> > > & items_arg=[11]("execute lua ","set an [inspect] tag ","remove all
[inspect] tags
","createunit","changeside","labelteamterrain","labelterrain","clearlabels","wbtoggle","cycle","endturn"),
int xloc=628, int yloc=348, bool context_menu=true, display & gui={...})
Zeile 1259 + 0x18 Bytes C++
wesnoth.exe!play_controller::show_menu(const
std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> > > &
items_arg=[24]("wml","undo","redo","wbexecuteaction","wbdeleteaction","wbbumpupaction","wbbumpdownaction","wbsupposedead","describeunit","renameunit","createunit","changeside","labelteamterrain","labelterrain","clearlabels","speak","continue","recruit","recall","wbtoggle","delayshroud","updateshroud","cycle","endturn"),
int xloc=628, int yloc=348, bool context_menu=true) Zeile 1192 C++
wesnoth.exe!controller_base::handle_event(const SDL_Event &
event={...})
Zeile 94 + 0x5b Bytes C++
wesnoth.exe!events::pump() Zeile 380 + 0x35 Bytes C++
wesnoth.exe!controller_base::play_slice(bool is_delay_enabled=true)
Zeile
198 C++
wesnoth.exe!playsingle_controller::play_human_turn() Zeile 713 C++
wesnoth.exe!playsingle_controller::play_side(const unsigned int
team_index=1, bool save=true) Zeile 637 + 0x12 Bytes C++
wesnoth.exe!playsingle_controller::play_turn(bool save=true) Zeile 591
+
0x21 Bytes C++
wesnoth.exe!playsingle_controller::play_scenario(const
std::pair<config::const_child_iterator,config::const_child_iterator> &
story=({i_=... },{i_=... }), bool skip_replay=false) Zeile 392 + 0x1a
Bytes C++
wesnoth.exe!playsingle_scenario(const config & game_config={...}, const
config * level=0x0012e6a8, display & disp={...}, game_state &
state_of_game={...}, const
std::pair<config::const_child_iterator,config::const_child_iterator> &
story=({i_=... },{i_=... }), bool skip_replay=false, end_level_data &
end_level={...}) Zeile 130 + 0x14 Bytes C++
wesnoth.exe!play_game(display & disp={...}, game_state &
gamestate={...},
const config & game_config={...}, io_type_t io_type=IO_NONE, bool
skip_replay=false) Zeile 365 + 0x28 Bytes C++
wesnoth.exe!game_controller::launch_game(game_controller_abstract::RELOAD_GAME_DATA
reload=NO_RELOAD_DATA) Zeile 1267 + 0x4b Bytes C++
wesnoth.exe!do_gameloop(int argc=3, char * * argv=0x0012fea0) Zeile
573 +
0x2d Bytes C++
wesnoth.exe!SDL_main(int argc=3, char * * argv=0x0012fea0) Zeile 627 +
0xd
Bytes C++
wesnoth.exe!_main() + 0xf5 Bytes C
wesnoth.exe!_WinMain@16() + 0xae Bytes C
wesnoth.exe!__tmainCRTStartup() Zeile 574 + 0x35 Bytes C
wesnoth.exe!WinMainCRTStartup() Zeile 399 C
_______________________________________________________
Reply to this item at:
<http://gna.org/bugs/?18821>
_______________________________________________
Nachricht geschickt von/durch Gna!
http://gna.org/
_______________________________________________
Wesnoth-bugs mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-bugs