Explorar el Código

Bug 1974: DST start or end causes edited/opened files to be uploaded

https://winscp.net/tracker/1974

Source commit: f0a3ed6d752a17af0314df3abe37508ff0232b49
Martin Prikryl hace 4 años
padre
commit
145fadac76
Se han modificado 2 ficheros con 15 adiciones y 3 borrados
  1. 14 3
      source/windows/EditorManager.cpp
  2. 1 0
      source/windows/EditorManager.h

+ 14 - 3
source/windows/EditorManager.cpp

@@ -347,7 +347,7 @@ void __fastcall TEditorManager::FileReload(TObject * Token)
   TAutoFlag ReloadingFlag(FileData->Reloading);
 
   OnFileReload(FileData->FileName, FileData->Data);
-  FileAge(FileData->FileName, FileData->Timestamp);
+  GetFileTimestamp(FileData->FileName, FileData->Timestamp);
 }
 //---------------------------------------------------------------------------
 void __fastcall TEditorManager::FileClosed(TObject * Token, bool Forced)
@@ -365,7 +365,7 @@ void __fastcall TEditorManager::AddFile(TFileData & FileData, TEditedFileData *
 {
   std::unique_ptr<TEditedFileData> Data(AData);
 
-  FileAge(FileData.FileName, FileData.Timestamp);
+  GetFileTimestamp(FileData.FileName, FileData.Timestamp);
   FileData.Closed = false;
   FileData.UploadCompleteEvent = INVALID_HANDLE_VALUE;
   FileData.Opened = Now();
@@ -459,6 +459,17 @@ bool __fastcall TEditorManager::CloseFile(int Index, bool IgnoreErrors, bool Del
   return Result;
 }
 //---------------------------------------------------------------------------
+bool TEditorManager::GetFileTimestamp(const UnicodeString & FileName, TDateTime & Timestamp)
+{
+  TSearchRecSmart ASearchRec;
+  bool Result = FileSearchRec(FileName, ASearchRec);
+  if (Result)
+  {
+    Timestamp = TTimeZone::Local->ToUniversalTime(ASearchRec.GetLastWriteTime());
+  }
+  return Result;
+}
+//---------------------------------------------------------------------------
 bool __fastcall TEditorManager::HasFileChanged(int Index, TDateTime & NewTimestamp)
 {
   TFileData * FileData = &FFiles[Index];
@@ -470,7 +481,7 @@ bool __fastcall TEditorManager::HasFileChanged(int Index, TDateTime & NewTimesta
   else
   {
     Result =
-      FileAge(FileData->FileName, NewTimestamp) &&
+      GetFileTimestamp(FileData->FileName, NewTimestamp) &&
       (FileData->Timestamp != NewTimestamp);
   }
   return Result;

+ 1 - 0
source/windows/EditorManager.h

@@ -101,6 +101,7 @@ private:
   void __fastcall CheckFileChange(int Index, bool Force);
   int __fastcall FindFile(const TObject * Token);
   void __fastcall ReleaseFile(int Index);
+  bool GetFileTimestamp(const UnicodeString & FileName, TDateTime & Timestamp);
 
   enum TWaitHandle { PROCESS, EVENT };
   int __fastcall WaitFor(unsigned int Count, const HANDLE * Handles,