X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fvfs%2Fnodecache.c;h=b2cc57faddb6ae55389d1cffbb92590796c674f1;hb=097d17ad093701091b0925aa7b13378cb9aed9df;hp=0d238941be80a52f40903417982dc6f1b83182ee;hpb=3a8670fa06b6be062caead81737848fcb01b0c60;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/vfs/nodecache.c b/KernelLand/Kernel/vfs/nodecache.c index 0d238941..b2cc57fa 100644 --- a/KernelLand/Kernel/vfs/nodecache.c +++ b/KernelLand/Kernel/vfs/nodecache.c @@ -85,7 +85,7 @@ tVFS_Node *Inode_GetCache(int Handle, Uint64 Inode) tVFS_Node *Inode_CacheNode(int Handle, tVFS_Node *Node) { tInodeCache *cache; - tCachedInode *newEnt, *ent, *prev; + tCachedInode *newEnt, *ent, *prev = NULL; cache = Inode_int_GetFSCache(Handle); if(!cache) return NULL; @@ -95,7 +95,6 @@ tVFS_Node *Inode_CacheNode(int Handle, tVFS_Node *Node) // Search Cache ent = cache->FirstNode; - prev = (tCachedInode*) &cache->FirstNode; for( ; ent; prev = ent, ent = ent->Next ) { if(ent->Node.Inode < Node->Inode) continue; @@ -110,7 +109,10 @@ tVFS_Node *Inode_CacheNode(int Handle, tVFS_Node *Node) newEnt = malloc(sizeof(tCachedInode)); newEnt->Next = ent; memcpy(&newEnt->Node, Node, sizeof(tVFS_Node)); - prev->Next = newEnt; + if( prev ) + prev->Next = newEnt; + else + cache->FirstNode = newEnt; newEnt->Node.ReferenceCount = 1; LOG("Cached %llx as %p", Node->Inode, &newEnt->Node);