The previous code:
if (curFieldLen < width) {
...
strncpy(bar + curFieldLen + 2, help, width - curFieldLen - 2);
was not correctly guarded against cache entries whose size were exactly
1 or 2 characters short of the window size.
"if (curFieldLen - 2 < width)" would have prevented a copy of
negative/max_int characters and a subsequent crash.
The whole method was modernized with std::string instead of char*
Repro steps: configure (without errors), the logs are displayed then the
cache is displayed again, resize the window up -> the logs are
redisplayed after resize instead of the cache
The 'CurrentForm' pointer were left pointed to the last log message
form, this resets it to the main form when configure or generate is done
Use cmSystemTools to report some messages.
These should now be caught and displayed properly,
both in ccmake and cmake-gui
Avoid log display flickering during processing
- Don't clear the screen each time the long message form is rendered.
It always renders the whole screen again so clearing it only causes
flickering.
- Add scroll down capabilities to the long message form so that it can
draw itself directly in the correct state. This removes the need to
programatically scroll down just after that also caused flickering.
Fixes#19882Fixes#13288
Refactoring in commit 98617f1be0 (Refactor: Move CPack internal files to
`Internal/CPack/` directory, 2019-07-09, v3.16.0-rc1~449^2) accidentally
changed the public-facing names of the templates. The name passed to
`FindTemplate` is searched in `CMAKE_MODULE_PATH` and should not change.
Remove the `Internal/CPack/` prefix on the names added by that commit.
Teach `FindTemplate` to use our builtin default directly when the
public-facing name is not found in `CMAKE_MODULE_PATH`.
Fixes: #19979
Combine `--repeat-until-fail`, `--repeat-until-pass`, and
`--repeat-after-timeout` to create a single `--repeat <mode>:<n>`
option. Retain `--repeat-until-fail` too because that has been
available in previous releases.
2d0100fac7 replace remove and remove_directory with rm in tests
5239fc5c75 cmake -E: Add rm with improved semantics over remove and remove_directory
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3949
On Windows, libuv uses `_CrtSetReportHook` to install a handler it uses
to suppress assertions on invalid file descriptors in `_get_osfhandle`.
This removes the handler we install in CI environments to suppress
interactive popups. Move installation of our handler to after libuv is
initialized so that our handler is actually used.
Unfortunately this also removes libuv's handler and so may cause Debug
builds under CI to abort on invalid file descriptors instead of simply
converting them to `INVALID_HANDLE_VALUE`. If this becomes a problem
we may need to modify libuv to make its hook more configurable.
28994115e8 ctest_test: Add option to REPEAT tests
42d5d8f425 cmCTestMultiProcessHandler: Hold repeat mode as a member
ed65b3e984 CTest: Rename internal APIs for --repeat options
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4011