From 81bfacca545e7394a13baa569a6b7c894fc36bde Mon Sep 17 00:00:00 2001 From: Peter Scott Date: Tue, 18 Oct 2011 10:04:48 -0400 Subject: [PATCH] Windows: AFSRemoveCaseInsensitiveDirEntry corrections If there is a fLink but no parentLink for the DirEntry being removed, return the fLink as the new value for *RootNode. This patch set also includes two changes that improve readability but do not alter the behavior. Change-Id: I112265798df9d46c83ffacddc7d97ad0f6fce5bf Reviewed-on: http://gerrit.openafs.org/5638 Reviewed-by: Rod Widdowson Reviewed-by: Peter Scott Tested-by: Jeffrey Altman Reviewed-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSBTreeSupport.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSBTreeSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSBTreeSupport.cpp index 107e53bca..a87004582 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSBTreeSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSBTreeSupport.cpp @@ -690,7 +690,8 @@ AFSRemoveCaseInsensitiveDirEntry( IN AFSDirectoryCB **RootNode, try_return( ntStatus); } - else if( DirEntry->CaseInsensitiveList.fLink != NULL) + + if( DirEntry->CaseInsensitiveList.fLink != NULL) { // @@ -711,6 +712,10 @@ AFSRemoveCaseInsensitiveDirEntry( IN AFSDirectoryCB **RootNode, pParentNode->CaseInsensitiveTreeEntry.leftLink = (void *)pNewHeadEntry; } } + else + { + *RootNode = pNewHeadEntry; + } if( pRightNode != NULL) { @@ -732,7 +737,7 @@ AFSRemoveCaseInsensitiveDirEntry( IN AFSDirectoryCB **RootNode, pNewHeadEntry->CaseInsensitiveTreeEntry.rightLink = pRightNode; - SetFlag( ((AFSDirectoryCB *)DirEntry->CaseInsensitiveList.fLink)->Flags, AFS_DIR_ENTRY_CASE_INSENSTIVE_LIST_HEAD); + SetFlag( pNewHeadEntry->Flags, AFS_DIR_ENTRY_CASE_INSENSTIVE_LIST_HEAD); try_return( ntStatus); } -- 2.39.5