In case we're performing an in-place move (ie, in the same directory), if short name matches before and after, keep it.
This avoids that a file with long file name sees its short name changing on normally 'non-effect' renames.
For instance, in case of case-change only rename, short name will now be preserved.
See ya, you 7y old bug :-)
CORE-3875 #resolve #comment Fixed with r71270
svn path=/trunk/; revision=71270
{
break;
}
+ else if (MoveContext)
+ {
+ ASSERT(*Fcb);
+ if (strncmp((char *)SearchContext.DirEntry.Fat.ShortName, (char *)(*Fcb)->entry.Fat.ShortName, 11) == 0)
+ {
+ if (MoveContext->InPlace)
+ {
+ ASSERT(SearchContext.DirEntry.Fat.FileSize == MoveContext->FileSize);
+ break;
+ }
+ }
+ }
}
if (i == 100) /* FIXME : what to do after this ? */
{
OldParent = pFcb->parentFcb;
CcPurgeCacheSection(&OldParent->SectionObjectPointers, NULL, 0, FALSE);
+ MoveContext.InPlace = (OldParent == ParentFcb);
/* Add our new entry with our cluster */
Status = VfatAddEntry(DeviceExt,
ULONG FileSize;
USHORT CreationDate;
USHORT CreationTime;
+ BOOLEAN InPlace;
} VFAT_MOVE_CONTEXT, *PVFAT_MOVE_CONTEXT;
FORCEINLINE