diff options
author | greenboxal2 <greenboxal2@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-09-05 11:34:16 +0000 |
---|---|---|
committer | greenboxal2 <greenboxal2@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-09-05 11:34:16 +0000 |
commit | ea58a7cf0ed8f34fd75dbaa11d3c3d7dd2d9012c (patch) | |
tree | 7603592d8265b21ff9a20e9c2ecf066d059a3559 | |
parent | 2f7c1cad534e6e2ee079546437bee2bf172dafe5 (diff) | |
download | hercules-ea58a7cf0ed8f34fd75dbaa11d3c3d7dd2d9012c.tar.gz hercules-ea58a7cf0ed8f34fd75dbaa11d3c3d7dd2d9012c.tar.bz2 hercules-ea58a7cf0ed8f34fd75dbaa11d3c3d7dd2d9012c.tar.xz hercules-ea58a7cf0ed8f34fd75dbaa11d3c3d7dd2d9012c.zip |
Fixed ERS cache linked list algorithm.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16748 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r-- | src/common/ers.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/common/ers.c b/src/common/ers.c index 514f09c34..b94b0888d 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); |