From cc95f9f8ef05048854230a54491a932e4e611efa Mon Sep 17 00:00:00 2001 From: Frederic Culot Date: Sat, 2 Sep 2006 09:20:35 +0000 Subject: fixed a possible infinite loop in todo_get_position() --- src/todo.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src/todo.c') diff --git a/src/todo.c b/src/todo.c index 385acc7..3337187 100755 --- a/src/todo.c +++ b/src/todo.c @@ -1,4 +1,4 @@ -/* $calcurse: todo.c,v 1.3 2006/08/31 18:47:54 culot Exp $ */ +/* $calcurse: todo.c,v 1.4 2006/09/02 09:20:35 culot Exp $ */ /* * Calcurse - text-based organizer @@ -120,15 +120,23 @@ struct todo_s *todo_get_item(int item_number) */ int todo_get_position(struct todo_s *i) { - struct todo_s *o = todolist; - int n = 1; + struct todo_s *o; + int n = 1, found = 0; - for (;;) { - if (o == i) break; - o = o->next; + for (o = todolist; o; o = o->next) { + if (o == i) { + found = 1; + break; + } n++; } - return n; + if (found) { + return n; + } else { + fputs(_("FATAL ERROR in todo_get_position: todo not found\n"), + stderr); + exit(EXIT_FAILURE); + } } /* Change an item priority by pressing '+' or '-' inside TODO panel. */ -- cgit v1.2.3-54-g00ecf