1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-11-23 02:13:01 +01:00

added infinite loop check

This commit is contained in:
Jfreegman 2013-08-28 14:47:47 -04:00
parent c08639b8e1
commit 4f2e80ef28

View File

@ -10,6 +10,7 @@
#include <stdint.h> #include <stdint.h>
#include <ctype.h> #include <ctype.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdlib.h>
#include <tox/tox.h> #include <tox/tox.h>
@ -61,7 +62,7 @@ void friendlist_onStatusChange(ToxWindow *self, int num, uint8_t *str, uint16_t
int friendlist_onFriendAdded(Tox *m, int num) int friendlist_onFriendAdded(Tox *m, int num)
{ {
if (num_friends == MAX_FRIENDS_NUM) if (num_friends < 0 || num_friends >= MAX_FRIENDS_NUM)
return -1; return -1;
int i; int i;
@ -91,15 +92,19 @@ static void select_friend(wint_t key)
return; return;
int n = num_selected; int n = num_selected;
int f_inf = num_selected;
if (key == KEY_UP) { if (key == KEY_UP) {
while (true) { while (true) {
if (--n < 0) if (--n < 0) n = num_friends-1;
n = num_friends-1;
if (friends[n].active) { if (friends[n].active) {
num_selected = n; num_selected = n;
return; return;
} }
if (n == f_inf) {
endwin();
exit(2);
}
} }
} else if (key == KEY_DOWN) { } else if (key == KEY_DOWN) {
while (true) { while (true) {
@ -108,6 +113,10 @@ static void select_friend(wint_t key)
num_selected = n; num_selected = n;
return; return;
} }
if (n == f_inf) {
endwin();
exit(2);
}
} }
} }
} }
@ -120,7 +129,7 @@ static void delete_friend(Tox *m, ToxWindow *self, int f_num, wint_t key)
int i; int i;
for (i = num_friends; i != 0; --i) { for (i = num_friends; i > 0; --i) {
if (friends[i-1].active) if (friends[i-1].active)
break; break;
} }