diff options
| author | Linus Nielsen Feltzing <linus@haxx.se> | 2006-01-23 10:59:07 +0000 |
|---|---|---|
| committer | Linus Nielsen Feltzing <linus@haxx.se> | 2006-01-23 10:59:07 +0000 |
| commit | dacc6f3821f750c24f939091e64d9a6ee3d9fd3f (patch) | |
| tree | 3a7a1dcf81f4df3a2b33d3696971c300db2869f6 | |
| parent | 765e0f89d804b00c504104f4842947bdeee69fa3 (diff) | |
| download | rockbox-dacc6f3821f750c24f939091e64d9a6ee3d9fd3f.zip rockbox-dacc6f3821f750c24f939091e64d9a6ee3d9fd3f.tar.gz rockbox-dacc6f3821f750c24f939091e64d9a6ee3d9fd3f.tar.bz2 rockbox-dacc6f3821f750c24f939091e64d9a6ee3d9fd3f.tar.xz | |
Slightly safer version of queue_delete()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8425 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/kernel.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/firmware/kernel.c b/firmware/kernel.c index f8b9cec..614f9cf 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) |