From 086dbe90c8deccff95d62f46cdebbe51f01b37a6 Mon Sep 17 00:00:00 2001 From: David McPaul Date: Sun, 10 Aug 2008 13:54:03 +0000 Subject: [PATCH] limit no of retries to prevent infinite loop git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26914 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/media/ChunkCache.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/kits/media/ChunkCache.cpp b/src/kits/media/ChunkCache.cpp index 47ca610242..35c5b04dc6 100644 --- a/src/kits/media/ChunkCache.cpp +++ b/src/kits/media/ChunkCache.cpp @@ -89,6 +89,8 @@ ChunkCache::NeedsRefill() status_t ChunkCache::GetNextChunk(const void **chunkBuffer, size_t *chunkSize, media_header *mediaHeader) { +uint8 retry_count = 0; + // printf("ChunkCache::GetNextChunk: %p fEmptyChunkCount %ld, fReadyChunkCount %ld\n", fNextGet, fEmptyChunkCount, fReadyChunkCount); retry: acquire_sem(fGetWaitSem); @@ -97,6 +99,11 @@ retry: if (fReadyChunkCount == 0) { fLocker->Unlock(); printf("ChunkCache::GetNextChunk: %p retrying\n", fNextGet); + // Limit to 5 retries + retry_count++; + if (retry_count > 4) { + return B_ERROR; + } goto retry; } fEmptyChunkCount++;