X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fvfs%2Fnodecache.c;h=0124e6282038a6496b7cb28ca5cd4db99f4594f8;hb=ca05044548d5c1de87c030d625a305731a6cc665;hp=a85e5184e7fd229eef40cfc126988cf841ed685a;hpb=c7c5c4dbeb7b298675856eebb36084c92e989d98;p=tpg%2Facess2.git diff --git a/Kernel/vfs/nodecache.c b/Kernel/vfs/nodecache.c index a85e5184..0124e628 100644 --- a/Kernel/vfs/nodecache.c +++ b/Kernel/vfs/nodecache.c @@ -2,7 +2,7 @@ * AcessMicro VFS * - File IO Passthru's */ -#include +#include #include "vfs.h" #include "vfs_int.h" @@ -158,7 +158,7 @@ void Inode_UncacheNode(int Handle, Uint64 Inode) void Inode_ClearCache(int Handle) { tInodeCache *cache; - tInodeCache *prev = (tInodeCache*) &gVFS_InodeCache; + tInodeCache *prev = NULL; tCachedInode *ent, *next; // Find the cache @@ -167,7 +167,7 @@ void Inode_ClearCache(int Handle) cache && cache->Handle < Handle; prev = cache, cache = cache->Next ); - if(!cache) return; + if(!cache || cache->Handle != Handle) return; // Search Cache ent = cache->FirstNode; @@ -184,7 +184,10 @@ void Inode_ClearCache(int Handle) } // Free Cache - prev->Next = cache->Next; + if(prev == NULL) + gVFS_InodeCache = cache->Next; + else + prev->Next = cache->Next; free(cache); }