summaryrefslogtreecommitdiffstats
path: root/firmware
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
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')
-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)
void queue_delete(struct event_queue *q)
{
int i;
+ bool found = false;
/* Find the queue to be deleted */
for(i = 0;i < num_queues;i++)
{
if(all_queues[i] == q)
+ {
+ found = true;
break;
+ }
}
- /* Move the following queues up in the list */
- for(;i < num_queues-1;i++)
+ if(found)
{
- all_queues[i] = all_queues[i+1];
+ /* Move the following queues up in the list */
+ for(;i < num_queues-1;i++)
+ {
+ all_queues[i] = all_queues[i+1];
+ }
+
+ num_queues--;
}
-
- num_queues--;
}
void queue_wait(struct event_queue *q, struct event *ev)