summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/macro.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-31 11:46:46 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-31 11:46:46 +0000
commite815ad3dcd37899ea93e57bef68408ee4e971c87 (patch)
tree95d62f2f0579927bb18a4330359604631a49c3a6 /crawl-ref/source/macro.cc
parent53ea3795dcc402bbee4832f750aab1dc1f985409 (diff)
downloadcrawl-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.cc22
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);
}