tweaks: don't bother freeing the key buffer, just reallocate it
parent
4c505e5127
commit
45d2458b47
18
src/winio.c
18
src/winio.c
|
@ -35,8 +35,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int *key_buffer = NULL;
|
static int *key_buffer = NULL;
|
||||||
/* The keystroke buffer, containing all the keystrokes we
|
/* A buffer for the keystrokes that haven't been handled yet. */
|
||||||
* haven't handled yet at a given point. */
|
|
||||||
static size_t key_buffer_len = 0;
|
static size_t key_buffer_len = 0;
|
||||||
/* The length of the keystroke buffer. */
|
/* The length of the keystroke buffer. */
|
||||||
static bool solitary = FALSE;
|
static bool solitary = FALSE;
|
||||||
|
@ -106,8 +105,7 @@ void run_macro(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(key_buffer);
|
key_buffer = (int *)nrealloc(key_buffer, macro_length * sizeof(int));
|
||||||
key_buffer = (int *)nmalloc(macro_length * sizeof(int));
|
|
||||||
key_buffer_len = macro_length;
|
key_buffer_len = macro_length;
|
||||||
|
|
||||||
for (i = 0; i < macro_length; i++)
|
for (i = 0; i < macro_length; i++)
|
||||||
|
@ -210,9 +208,9 @@ void read_keys_from(WINDOW *win)
|
||||||
curs_set(0);
|
curs_set(0);
|
||||||
|
|
||||||
/* Initiate the keystroke buffer, and save the keycode in it. */
|
/* Initiate the keystroke buffer, and save the keycode in it. */
|
||||||
key_buffer_len++;
|
key_buffer = (int *)nrealloc(key_buffer, sizeof(int));
|
||||||
key_buffer = (int *)nmalloc(sizeof(int));
|
|
||||||
key_buffer[0] = input;
|
key_buffer[0] = input;
|
||||||
|
key_buffer_len = 1;
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
/* If we got a SIGWINCH, get out as the win argument is no longer valid. */
|
/* If we got a SIGWINCH, get out as the win argument is no longer valid. */
|
||||||
|
@ -319,12 +317,8 @@ int *get_input(WINDOW *win, size_t input_len)
|
||||||
memcpy(input, key_buffer, input_len * sizeof(int));
|
memcpy(input, key_buffer, input_len * sizeof(int));
|
||||||
key_buffer_len -= input_len;
|
key_buffer_len -= input_len;
|
||||||
|
|
||||||
/* If the keystroke buffer is now empty, mark it as such. */
|
/* If the buffer still contains keystrokes, move them to the front. */
|
||||||
if (key_buffer_len == 0) {
|
if (key_buffer_len > 0) {
|
||||||
free(key_buffer);
|
|
||||||
key_buffer = NULL;
|
|
||||||
} else {
|
|
||||||
/* Trim from the buffer the codes that were copied. */
|
|
||||||
memmove(key_buffer, key_buffer + input_len, key_buffer_len *
|
memmove(key_buffer, key_buffer + input_len, key_buffer_len *
|
||||||
sizeof(int));
|
sizeof(int));
|
||||||
key_buffer = (int *)nrealloc(key_buffer, key_buffer_len *
|
key_buffer = (int *)nrealloc(key_buffer, key_buffer_len *
|
||||||
|
|
Loading…
Reference in New Issue