| ... | ... |
@@ -84,8 +84,9 @@ void run_search(char *needle){
|
| 84 | 84 |
|
| 85 | 85 |
#define NUMLINES 10 |
| 86 | 86 |
|
| 87 |
+#define SEARCH_SIZE_MAX 4096 |
|
| 87 | 88 |
int search_size; |
| 88 |
-char search[4096] = {0};
|
|
| 89 |
+char search[SEARCH_SIZE_MAX + 1] = {0};
|
|
| 89 | 90 |
|
| 90 | 91 |
void clear(tty_t *tty){
|
| 91 | 92 |
fprintf(tty->fout, "%c%c0G", 0x1b, '['); |
| ... | ... |
@@ -156,10 +157,11 @@ void run(tty_t *tty){
|
| 156 | 157 |
draw(tty); |
| 157 | 158 |
ch = tty_getchar(tty); |
| 158 | 159 |
if(isprint(ch)){
|
| 159 |
- /* FIXME: overflow */ |
|
| 160 |
- search[search_size++] = ch; |
|
| 161 |
- search[search_size] = '\0'; |
|
| 162 |
- run_search(search); |
|
| 160 |
+ if(search_size < SEARCH_SIZE_MAX){
|
|
| 161 |
+ search[search_size++] = ch; |
|
| 162 |
+ search[search_size] = '\0'; |
|
| 163 |
+ run_search(search); |
|
| 164 |
+ } |
|
| 163 | 165 |
}else if(ch == 127 || ch == 8){ /* DEL || backspace */
|
| 164 | 166 |
if(search_size) |
| 165 | 167 |
search[--search_size] = '\0'; |