[PR #4309] Fix FillConsoleOutputCharacterA crash #25709

Open
opened 2026-01-31 09:11:16 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/microsoft/terminal/pull/4309

State: closed
Merged: Yes


Summary of the Pull Request

Despite being specified as noexcept, FillConsoleOutputCharacterA emits an exception when a call to ConvetToW is made with an argument character which can't be converted. This PR fixes this throw, by wrapping ConvertToW in a try-catch_return.

References

PR Checklist

  • Closes Add a configuration object for focused vs unfocused state (#4258)
  • CLA signed. If not, go over here and sign the CLA
  • Tests added/passed: thanks @miniksa
  • Requires documentation to be updated
  • I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place

Detailed Description of the Pull Request / Additional comments

Following the symantics of other FillConsoleOutputCharacter* the output param cellsModified is set to 0. The try-catch_return is also what other functions of this family perform in case of errors.

Validation Steps Performed

The repro test in the issue uses this function as it exists in the windows.h library not the one present in the WT repo (by my understanding). Because of this, I have not been able to test that this change corrects the original repro.
Original repro no longer crashes.

**Original Pull Request:** https://github.com/microsoft/terminal/pull/4309 **State:** closed **Merged:** Yes --- <!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request Despite being specified as `noexcept`, `FillConsoleOutputCharacterA` emits an exception when a call to `ConvetToW` is made with an argument character which can't be converted. This PR fixes this throw, by wrapping `ConvertToW` in a try-catch_return. <!-- Other than the issue solved, is this relevant to any other issues/existing PRs? --> ## References <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist * [x] Closes #4258 * [x] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [x] Tests added/passed: thanks @miniksa * [ ] Requires documentation to be updated * [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place <!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments Following the symantics of other `FillConsoleOutputCharacter*` the output param `cellsModified` is set to `0`. The try-catch_return is also what other functions of this family perform in case of errors. <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed ~The repro test in the issue uses this function as it exists in the `windows.h` library not the one present in the WT repo (by my understanding). Because of this, I have not been able to test that this change corrects the original repro.~ Original repro no longer crashes.
claunia added the pull-request label 2026-01-31 09:11:16 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#25709