X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fdrv%2Fproc.c;h=8056114776bbe712268af3ae1ed92c468dbc42bc;hb=0b24cbc2f18942b3d1d74efa025ecfa318ab35ec;hp=c0ce6edc521f825d601b4836672e6bc6d382ef33;hpb=9d85201216cb35e1b1e051b1d7cdc38eaa5befa4;p=tpg%2Facess2.git diff --git a/Kernel/drv/proc.c b/Kernel/drv/proc.c index c0ce6edc..80561147 100644 --- a/Kernel/drv/proc.c +++ b/Kernel/drv/proc.c @@ -155,10 +155,10 @@ int SysFS_RegisterFile(const char *Path, const char *Data, int Length) child->Node.ReadDir = SysFS_Comm_ReadDir; child->Node.FindDir = SysFS_Comm_FindDir; if( !prev ) { - //if(ent) + if(ent) ent->Node.ImplPtr = child; - //else - // gSysFS_DriverInfo.RootNode.ImplPtr = child; + else + gSysFS_DriverInfo.RootNode.ImplPtr = child; // ^^^ Impossible (There is already /Version) } else @@ -184,7 +184,7 @@ int SysFS_RegisterFile(const char *Path, const char *Data, int Length) child = ent->Node.ImplPtr; else child = gSysFS_DriverInfo.RootNode.ImplPtr; - for( child = ent->Node.ImplPtr; child; prev = child, child = child->Next ) + for( ; child; child = child->Next ) { if( strcmp( &Path[start], child->Name ) == 0 ) break; @@ -283,7 +283,10 @@ int SysFS_RemoveFile(int ID) parent = file->Parent; // Remove from file list - prev->ListNext = file->ListNext; + if(prev) + prev->ListNext = file->ListNext; + else + gSysFS_FileList = file->ListNext; file->Node.Size = 0; file->Node.ImplPtr = NULL; @@ -298,7 +301,10 @@ int SysFS_RemoveFile(int ID) } // Remove from parent directory - prev->Next = ent->Next; + if(prev) + prev->Next = ent->Next; + else + parent->Node.ImplPtr = ent->Next; // Free if not in use if(file->Node.ReferenceCount == 0)