memset takes the fill value before the size, so
memset(&ProcessEntry, sizeof(ProcessEntry), 0) zeroed nothing. It was
harmless, as Process32First fills the entry it reads, but the entry is now
cleared as intended.
FileGetSymLinkTargetSafe opens the link with CreateFile to read its reparse
point, but never closes the handle, so each call leaks one. DriveView calls
it for every symbolic link and junction it lists.
https://winscp.net/tracker/2455
Some related refactoring:
Refactoring php release script includes
Reusing complete_translations in copy_complete_translations.php
Removing obsolete maketran.bat hack
Source commit: 07476ec822e4bd7b8b1c65ceb9783b6d92f20489
- regarding the ILINK_LibraryPath for Cfg_1_Win32 (Debug):
Win32\Debug (not only Win32c\Debug) needs to be before Win32c\Release, as win32c does not include debug builds of Pascal code - so without that VCL debugging won't work
- IDE insist on adding CC_Suffix to all projects once switched to Clang, although it is only used in WinSCP.cbproj
- UNICODE define: Not needed for build (it's implicit), but CodeInsight does not know it it somehow
Source commit: da06d73eb86caff5ca9cac0185bed54da0da8f07
- Once doing that, including more headers to PCH, not just vcl.h
- Clang won't need explicit include, but we will probably keep it anyway.
- #pragma hdrstop has no effect in Clang
Source commit: adc8a268b6907c5337ccaa430cca7526793a3019
Mostly:
– incorrectly identified uninitialized variables
– explicit static global variables
– const, sign and down casts and safety
– typename use
– semicolon after function implementation
– unused variables, fields, arguments and macros
– field initialization order
– exact include filename case
– redundant in code macros already defined at project level
Source commit: 5c1338d95bd275082288dd1e773a033df6e379cd
Notably:
Bug fix: Monospace font is not remembered if SSH banners are administratively forced
Change: Bug fix: In XML log, filename tag was included in stat tag, although explicitly documented not to
Source commit: 693ecd9b083f1460dc4d1ae1ff49e625989f8a50
As part of refactoring, calling GetProductInfo unconditionally as it should be supported on all Windows version we support
Also querying ProductName from 64-bit key, as JCL does (does not help with Windows 11 though)
Source commit: f5f6c075df730b9e5283d6490647bf0c11b23629
https://winscp.net/tracker/2325
As a side effect this also "fixes" unexpected encoding of invalid character replacement in session log file (value 1 was encoded as 0100, instead of expected 0001)
Source commit: fb80501de79abd3bbd2d4d994252029f5f7bda88
Because timestamps returned by FileAge and TSearchRec.TimeStamp do not match anymore.
They both returned "wrong" timestamp in XE6. In 11, TSearchRec.TimeStamp was "fixed", but FileAge wasn't.
SysUtils' TSearchRec.TimeStamp not seem to behave the same as our TSearchRecSmart::GetLastWriteTime()
Source commit: eabc8d1804da280ca5e9a158c27cc91ed5ee2302
Comments:
- .res files seem to be linked automatically, so explicit entries in project files caused duplicates
- JCL updated for compatibility with BCB11 (jcld28win32.inc obtained by running JCJ installer [uninstalled afterwards])
Source commit: ec28d10a0bbb346ed2bb3940aed37e777342e663