aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/input.cpp
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2016-02-02 18:13:40 -0800
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2016-02-02 18:13:40 -0800
commitdf8c4ce83554115234b5889446f189a04fd155c4 (patch)
tree7cfe47c3f49e1e8115ebcfc58ab682d01edc34c3 /src/input.cpp
parent1b8face1a37ceb0da3e57645200d5dc97360a4ee (diff)
Use vector instead of deque in input_function_push_args
deque is a memory hog last I checked
Diffstat (limited to 'src/input.cpp')
-rw-r--r--src/input.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/input.cpp b/src/input.cpp
index c2499d1a..c3e26815 100644
--- a/src/input.cpp
+++ b/src/input.cpp
@@ -42,7 +42,6 @@
#include "output.h"
#include <vector>
#include <algorithm>
-#include <deque>
#define DEFAULT_TERM L"ansi"
#define MAX_INPUT_FUNCTION_ARGS 20
@@ -539,23 +538,28 @@ wchar_t input_function_pop_arg()
void input_function_push_args(int code)
{
int arity = input_function_arity(code);
- std::deque<wchar_t> skipped;
+ std::vector<wchar_t> skipped;
for (int i = 0; i < arity; i++)
{
wchar_t arg;
// skip and queue up any function codes
+ // See #2357
while(((arg = input_common_readch(0)) >= R_MIN) && (arg <= R_MAX))
{
- skipped.push_front(arg);
+ skipped.push_back(arg);
}
input_function_push_arg(arg);
}
// push the function codes back into the input stream
- std::for_each(skipped.begin(), skipped.end(), input_common_next_ch);
+ size_t idx = skipped.size();
+ while (idx--)
+ {
+ input_common_next_ch(skipped.at(idx));
+ }
}
/**