瀏覽代碼

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

https://winscp.net/tracker/1510

Source commit: 2f3d74077f405637b294aa3bb3ecb219995b21b7
Martin Prikryl 8 年之前
父節點
當前提交
b6fa1623d5
共有 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

@@ -4691,6 +4691,12 @@ TTerminal * __fastcall TTerminal::CreateSecondarySession(const UnicodeString & N
   return Result.release();
   return Result.release();
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
+void __fastcall TTerminal::FillSessionDataForCode(TSessionData * Data)
+{
+  const TSessionInfo & SessionInfo = GetSessionInfo();
+  Data->HostKey = SessionInfo.HostKeyFingerprint;
+}
+//---------------------------------------------------------------------------
 TTerminal * __fastcall TTerminal::GetCommandSession()
 TTerminal * __fastcall TTerminal::GetCommandSession()
 {
 {
   if ((FCommandSession != NULL) && !FCommandSession->Active)
   if ((FCommandSession != NULL) && !FCommandSession->Active)

+ 1 - 0
source/core/Terminal.h

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

+ 1 - 2
source/forms/CustomScpExplorer.cpp

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

+ 4 - 1
source/windows/WinMain.cpp

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