Bug: Local To Remote Transfer Ends After First File
Version: WinSCP 4.0.7 (Build 370)
Problem Since: Don't Remember
Operating System: Windows XP Professional
Default System Codepage: Shift JIS (Double Byte)
Interface Mode: Explorer-like
Description:
Local to remote file transfer will end after the successful completion of the first file with an error stating that the second file cannot be found.
Conditions required to reproduce:
- The file to be transferred must be placed in a directory with a path that contains double byte characters.
- The error message will be shown even when transferring single files if the above condition is met.
Analysis:
The error message stating the second file cannot be found shows that it is looking at an incorrect file path. The file path is broken such that there are few characters missing at the start of the path. For example, "C:\foo\bar\file" might become "o\bar\file"
The number of characters missing is the same as the number of double byte characters in the path.
A guess at the possible cause of the problem is as follows: The list of files to be transferred is contained in a single contiguous buffer. Upon completion of a file, the buffer is incorrected progressed in number of bytes of the path just completed instead of number of characters. The buffer itself may be allocated in units capable of representing double-byte characters in a single unit.
Problem Since: Don't Remember
Operating System: Windows XP Professional
Default System Codepage: Shift JIS (Double Byte)
Interface Mode: Explorer-like
Description:
Local to remote file transfer will end after the successful completion of the first file with an error stating that the second file cannot be found.
Conditions required to reproduce:
- The file to be transferred must be placed in a directory with a path that contains double byte characters.
- The error message will be shown even when transferring single files if the above condition is met.
Analysis:
The error message stating the second file cannot be found shows that it is looking at an incorrect file path. The file path is broken such that there are few characters missing at the start of the path. For example, "C:\foo\bar\file" might become "o\bar\file"
The number of characters missing is the same as the number of double byte characters in the path.
A guess at the possible cause of the problem is as follows: The list of files to be transferred is contained in a single contiguous buffer. Upon completion of a file, the buffer is incorrected progressed in number of bytes of the path just completed instead of number of characters. The buffer itself may be allocated in units capable of representing double-byte characters in a single unit.