From: Jeffrey Altman Date: Thu, 29 Nov 2012 08:02:48 +0000 (-0500) Subject: Windows: AFSTearDownFcbExtents count extents properly X-Git-Tag: upstream/1.8.0_pre1^2~1754 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=957601aeab7050413c4e0c9994e2c263a1b8374d;p=packages%2Fo%2Fopenafs.git Windows: AFSTearDownFcbExtents count extents properly Fcb->Specific.File.ExtentsCount cannot be used directly in the for loop conditional because each call to AFSFreeExtent() decrements the value. Instead, save the original value to 'lFcbExtentCount' and use that in the loop conditional. Change-Id: I7b2dc0fbd1cbf0eec2f627f8caad8c973c3437c7 Reviewed-on: http://gerrit.openafs.org/8566 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp index 0390f23b9..078200e6c 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp @@ -151,6 +151,7 @@ AFSTearDownFcbExtents( IN AFSFcb *Fcb, LIST_ENTRY *le, *leNext; AFSExtent *pEntry; LONG lExtentCount = 0, lProcessCount = 0; + LONG lFcbExtentCount; ULONG ulReleaseCount = 0; size_t sz; AFSReleaseExtentsCB *pRelease = NULL; @@ -215,8 +216,9 @@ AFSTearDownFcbExtents( IN AFSFcb *Fcb, TRUE); for( le = Fcb->Specific.File.ExtentsLists[AFS_EXTENTS_LIST].Flink, - lExtentCount = 0; - lExtentCount < Fcb->Specific.File.ExtentCount; + lExtentCount = 0, + lFcbExtentCount = Fcb->Specific.File.ExtentCount; + lExtentCount < lFcbExtentCount; lExtentCount += lProcessCount) { @@ -227,7 +229,7 @@ AFSTearDownFcbExtents( IN AFSFcb *Fcb, for( lProcessCount = 0, ulReleaseCount = 0; !IsListEmpty( le) && ulReleaseCount < AFS_MAXIMUM_EXTENT_RELEASE_COUNT && - lExtentCount + lProcessCount < Fcb->Specific.File.ExtentCount; + lExtentCount + lProcessCount < lFcbExtentCount; lProcessCount++, le = leNext) {