瀏覽代碼

Bug 1510: Failure when using "Generate Code" command on Upload dialog opened by /upload command-line parameter

https://winscp.net/tracker/1510
(cherry picked from commit b6fa1623d53942f293d7388ffb03eb549b86397b)

Conflicts:
	source/core/Terminal.cpp
	source/core/Terminal.h

Source commit: 2013af739bf4d2904a4a45560c91e8e01ec09c61
Martin Prikryl 8 年之前
父節點
當前提交
dfbbb7d9cd
共有 4 個文件被更改,包括 12 次插入3 次删除
  1. 6 0
      source/core/Terminal.cpp
  2. 1 0
      source/core/Terminal.h
  3. 1 2
      source/forms/CustomScpExplorer.cpp
  4. 4 1
      source/windows/WinMain.cpp

+ 6 - 0
source/core/Terminal.cpp

@@ -4069,6 +4069,12 @@ bool __fastcall TTerminal::GetCommandSessionOpened()
     (FCommandSession->Status == ssOpened);
 }
 //---------------------------------------------------------------------------
+void __fastcall TTerminal::FillSessionDataForCode(TSessionData * Data)
+{
+  const TSessionInfo & SessionInfo = GetSessionInfo();
+  Data->HostKey = SessionInfo.HostKeyFingerprint;
+}
+//---------------------------------------------------------------------------
 TTerminal * __fastcall TTerminal::GetCommandSession()
 {
   if ((FCommandSession != NULL) && !FCommandSession->Active)

+ 1 - 0
source/core/Terminal.h

@@ -493,6 +493,7 @@ public:
   void __fastcall ReflectSettings();
   void __fastcall CollectUsage();
   bool __fastcall IsThisOrChild(TTerminal * Terminal);
+  void __fastcall FillSessionDataForCode(TSessionData * Data);
 
   const TSessionInfo & __fastcall GetSessionInfo();
   const TFileSystemInfo & __fastcall GetFileSystemInfo(bool Retrieve = false);

+ 1 - 2
source/forms/CustomScpExplorer.cpp

@@ -8211,8 +8211,7 @@ void __fastcall TCustomScpExplorerForm::FileSystemInfo()
 TSessionData * __fastcall TCustomScpExplorerForm::SessionDataForCode()
 {
   std::unique_ptr<TSessionData> Data(CloneCurrentSessionData());
-  const TSessionInfo & SessionInfo = Terminal->GetSessionInfo();
-  Data->HostKey = SessionInfo.HostKeyFingerprint;
+  Terminal->FillSessionDataForCode(Data.get());
   return Data.release();
 }
 //---------------------------------------------------------------------------

+ 4 - 1
source/windows/WinMain.cpp

@@ -99,11 +99,14 @@ void __fastcall Upload(TTerminal * Terminal, TStrings * FileList, bool UseDefaul
 
   TargetDirectory = UnixIncludeTrailingBackslash(Terminal->CurrentDirectory);
 
+  std::unique_ptr<TSessionData> Data(Terminal->SessionData->Clone());
+  Terminal->FillSessionDataForCode(Data.get());
+
   int Options = coDisableQueue;
   int CopyParamAttrs = Terminal->UsableCopyParamAttrs(0).Upload;
   if (UseDefaults ||
       DoCopyDialog(true, false, FileList, TargetDirectory, &CopyParam, Options,
-        CopyParamAttrs, NULL, NULL))
+        CopyParamAttrs, Data.get(), NULL))
   {
     Terminal->CopyToRemote(FileList, TargetDirectory, &CopyParam, 0);
   }