Added a check for end of fat chain before end of recorded length

svn path=/trunk/; revision=1826
This commit is contained in:
Phillip Susi 2001-04-26 01:28:54 +00:00
parent 21cbb4fcc1
commit 595a5bad20

View file

@ -1,5 +1,5 @@
/* $Id: rw.c,v 1.22 2001/04/03 17:25:50 dwelch Exp $ /* $Id: rw.c,v 1.23 2001/04/26 01:28:54 phreak Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -384,7 +384,7 @@ VfatReadFile (PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
else else
CurrentCluster = Fcb->entry.FirstCluster; CurrentCluster = Fcb->entry.FirstCluster;
FirstCluster = CurrentCluster; FirstCluster = CurrentCluster;
DPRINT( "FirstCluster = %x\n", FirstCluster );
/* /*
* Truncate the read if necessary * Truncate the read if necessary
*/ */
@ -433,7 +433,7 @@ VfatReadFile (PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
* If the read doesn't begin on a chunk boundary then we need special * If the read doesn't begin on a chunk boundary then we need special
* handling * handling
*/ */
if ((ReadOffset % ChunkSize) != 0) if ((ReadOffset % ChunkSize) != 0 )
{ {
TempLength = min (Length, ChunkSize - (ReadOffset % ChunkSize)); TempLength = min (Length, ChunkSize - (ReadOffset % ChunkSize));
VfatReadCluster(DeviceExt, Fcb, ROUND_DOWN(ReadOffset, ChunkSize), VfatReadCluster(DeviceExt, Fcb, ROUND_DOWN(ReadOffset, ChunkSize),
@ -446,7 +446,7 @@ VfatReadFile (PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
ReadOffset = ReadOffset + TempLength; ReadOffset = ReadOffset + TempLength;
} }
while (Length >= ChunkSize) while (Length >= ChunkSize && CurrentCluster)
{ {
VfatReadCluster(DeviceExt, Fcb, ReadOffset, VfatReadCluster(DeviceExt, Fcb, ReadOffset,
FirstCluster, &CurrentCluster, Buffer, NoCache, 0, FirstCluster, &CurrentCluster, Buffer, NoCache, 0,
@ -457,7 +457,7 @@ VfatReadFile (PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
Length = Length - ChunkSize; Length = Length - ChunkSize;
ReadOffset = ReadOffset + ChunkSize; ReadOffset = ReadOffset + ChunkSize;
} }
if (Length > 0) if (Length > 0 && CurrentCluster)
{ {
VfatReadCluster(DeviceExt, Fcb, ReadOffset, VfatReadCluster(DeviceExt, Fcb, ReadOffset,
FirstCluster, &CurrentCluster, Buffer, NoCache, 0, FirstCluster, &CurrentCluster, Buffer, NoCache, 0,