Since r2051, TSimpleDirEnumerator ignores hidden and system entries unless HandleHidden is True, and that is the default for all its constructors and class functions. Before, the enumerator was called with ALL_FILES_ATTRIB_SET, which made FindFirst return them. r2051 gave CopyMatchingFiles an explicit True so it keeps copying them, but these callers were not adjusted:
TDirectorySync.CheckOneWay and TDirectorySync.SyncOneWay in u_dzFileUtils (TSimpleDirEnumerator.Create(SrcDirBs + '*.*')) do not see hidden or system files in the source directory, nor anything below a hidden or system subdirectory. A sync silently leaves them out, and a check does not report them as missing in the destination.TdzTreeVerify.CompareDirs in u_dzTreeVerify (EnumFilesOnly / EnumDirsOnly, two calls each) ignores hidden and system files and subdirectories on both sides. Two trees that differ only in such an entry are reported as identical, and a hidden orphan on either side is never reported.Expected: both compare and synchronise everything, as they did before r2051, i.e. pass HandleHidden = True; or, if skipping hidden entries is wanted for some callers, a property or parameter that defaults to the old behaviour.
Found by a code review.
Fixed in revision #2458
(The class is called
TTreeVerify, notTdzTreeVerifyas written above.)