From ee0c86082a71bad83df40545bba838dac294f757 Mon Sep 17 00:00:00 2001 From: greenboxal2 Date: Wed, 5 Sep 2012 11:34:16 +0000 Subject: [PATCH] Fixed ERS cache linked list algorithm. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16748 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/common/ers.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/common/ers.c b/src/common/ers.c index 514f09c343..b94b0888de 100644 --- a/src/common/ers.c +++ b/src/common/ers.c @@ -128,8 +128,10 @@ static ers_cache_t *ers_find_cache(unsigned int size) } else { - CacheList->Next = cache; - cache->Prev = CacheList; + cache->Next = CacheList; + cache->Next->Prev = cache; + CacheList = cache; + CacheList->Prev = NULL; } return cache; @@ -142,13 +144,12 @@ static void ers_free_cache(ers_cache_t *cache, bool remove) for (i = 0; i < cache->Used; i++) aFree(cache->Blocks[i]); - if (cache->Prev) - cache->Prev->Next = cache->Next; - if (cache->Next) cache->Next->Prev = cache->Prev; - if (CacheList == cache) + if (cache->Prev) + cache->Prev->Next = cache->Next; + else CacheList = cache->Next; aFree(cache->Blocks);