summaryrefslogtreecommitdiff
path: root/firmware/kernel.c
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2006-01-23 10:59:07 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2006-01-23 10:59:07 +0000
commitdacc6f3821f750c24f939091e64d9a6ee3d9fd3f (patch)
tree3a7a1dcf81f4df3a2b33d3696971c300db2869f6 /firmware/kernel.c
parent765e0f89d804b00c504104f4842947bdeee69fa3 (diff)
downloadrockbox-dacc6f3821f750c24f939091e64d9a6ee3d9fd3f.tar.gz
rockbox-dacc6f3821f750c24f939091e64d9a6ee3d9fd3f.zip
Slightly safer version of queue_delete()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8425 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/kernel.c')
-rw-r--r--firmware/kernel.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/firmware/kernel.c b/firmware/kernel.c
index f8b9cec2e1..614f9cf402 100644
--- a/firmware/kernel.c
+++ b/firmware/kernel.c
@@ -86,21 +86,28 @@ void queue_init(struct event_queue *q)
86void queue_delete(struct event_queue *q) 86void queue_delete(struct event_queue *q)
87{ 87{
88 int i; 88 int i;
89 bool found = false;
89 90
90 /* Find the queue to be deleted */ 91 /* Find the queue to be deleted */
91 for(i = 0;i < num_queues;i++) 92 for(i = 0;i < num_queues;i++)
92 { 93 {
93 if(all_queues[i] == q) 94 if(all_queues[i] == q)
95 {
96 found = true;
94 break; 97 break;
98 }
95 } 99 }
96 100
97 /* Move the following queues up in the list */ 101 if(found)
98 for(;i < num_queues-1;i++)
99 { 102 {
100 all_queues[i] = all_queues[i+1]; 103 /* Move the following queues up in the list */
104 for(;i < num_queues-1;i++)
105 {
106 all_queues[i] = all_queues[i+1];
107 }
108
109 num_queues--;
101 } 110 }
102
103 num_queues--;
104} 111}
105 112
106void queue_wait(struct event_queue *q, struct event *ev) 113void queue_wait(struct event_queue *q, struct event *ev)