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

Reply via email to