From 957601aeab7050413c4e0c9994e2c263a1b8374d Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Thu, 29 Nov 2012 03:02:48 -0500 Subject: [PATCH] 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 --- src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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) { -- 2.39.5