diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-31 11:46:46 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-31 11:46:46 +0000 |
commit | e815ad3dcd37899ea93e57bef68408ee4e971c87 (patch) | |
tree | 95d62f2f0579927bb18a4330359604631a49c3a6 /crawl-ref/source/macro.cc | |
parent | 53ea3795dcc402bbee4832f750aab1dc1f985409 (diff) | |
download | crawl-ref-e815ad3dcd37899ea93e57bef68408ee4e971c87.tar.gz crawl-ref-e815ad3dcd37899ea93e57bef68408ee4e971c87.zip |
[1896152] Fixed infinite loops when repeating commands (the repeat buffer was seeing keys not intended for the command being repeated).
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3975 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/macro.cc')
-rw-r--r-- | crawl-ref/source/macro.cc | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/crawl-ref/source/macro.cc b/crawl-ref/source/macro.cc index 29a2c7b242..25a81f2a8d 100644 --- a/crawl-ref/source/macro.cc +++ b/crawl-ref/source/macro.cc @@ -409,19 +409,6 @@ void macro_buf_add( const keyseq &actions, bool reverse) Buffer.insert( reverse? Buffer.begin() : Buffer.end(), act.begin(), act.end() ); - - if (reverse) - { - for (int i = 0, size_i = recorders.size(); i < size_i; i++) - for (int j = act.size() - 1 ; j >= 0; j--) - recorders[i]->add_key(act[j], reverse); - } - else - { - for (int i = 0, size_i = recorders.size(); i < size_i; i++) - for (int j = 0, size_j = act.size(); j < size_j ; j++) - recorders[i]->add_key(act[j]); - } } /* @@ -433,9 +420,6 @@ void macro_buf_add( int key, bool reverse ) Buffer.push_front( key ); else Buffer.push_back( key ); - - for (int i = 0, size = recorders.size(); i < size; i++) - recorders[i]->add_key(key, reverse); } @@ -515,9 +499,6 @@ static void macro_buf_apply_command_macro( void ) if (result.size() > 0) { - for (int i = 0, size_i = recorders.size(); i < size_i; i++) - recorders[i]->remove_trigger_keys(tmp.size()); - // Found macro, remove match from front: for (unsigned int i = 0; i < tmp.size(); i++) { @@ -561,6 +542,9 @@ static int macro_buf_get( void ) if (macro_keys_left >= 0) macro_keys_left--; + for (int i = 0, size_i = recorders.size(); i < size_i; i++) + recorders[i]->add_key(key); + return (key); } |