Make sure to use the invalid fd -1 when the output is not opened, and
only close valid fds. If fd 0 is closed, then this closes stdin. The
second time this happens, some other important fd will have become fd 0,
breaking something.
This causes random things to break (browser/CEF in reports, but really
it could be anything) as the wrong fds get closed.
The sequence should be the same for every fd:
- Close the parent end of the pipe
- If the child end of the pipe is not the intended fd already,
- Dup it over
- And close the old fd
This fixes a double-close() in the read path (which is fairly harmless
since it happens in the child, but sticks out in strace), some fd
leakage, and the stderr-already-is-2 case.
For some reason the action can no longer check if the URL generated in
the metainfo is reachable.
So to avoid keeping CI failing, local exceptions rule are
added.
Unfortunately it requires to keep a copy of exceptions already submitted
to Flathub.
The use of `SPA_POD_OPT_Rectangle()` means that if the rectangle cannot be
parsed, then no error will be returned. In that case uninitialized variables
will be used. This can happen if the pod object contains e.g. a list of
resolutions (`SPA_CHOICE_Enum`).
Fix that by using `SPA_POD_Rectangle()`, which enforces successful parsing.
New Features:
- Added Canvas support [exeldro]
- `GetCanvasList` request
- `CanvasCreated` event
- `CanvasRemoved` event
- `CanvasNameChanged` event
Bug Fixes:
- Fixed a possible crash on OBS shutdown [exeldro]
Changes:
- Updated translations [WizardCM]
- Various fixes and improvements to Canvas support [tt2468/Warchamp7]
There is a Code of Conduct page linked within the CONTRIBUTING.rst, however I think it would be more clear to have a link on the README directly pointing to the Code of Conduct all contributors should follow.
This issue was brought back by a somewhat recent change to fix slow
shutdown times in Linux.
To paraphrase tfo from the OBS Discord:
"I think the issue is that all the tray actions are parented to
trayIcon, so when it's deleted, Qt auto deletes them as children, then
delete trayMenu on the next line accesses those dead actions."
We now create the tray menu first, then setting the parent of the
actions (show / hide, stop / start streaming, etc.) to the tray menu.
Strip the PDB. Provide an alternate path for the PDB.
We already use /PDBALTPATH for set_target_properties_obs, but this
target understandably does not use that.
The main race was possible concurrent access to unordered_map which
could corrupt internal state. Our global variables were also not
atomically updated. DownloadWorkerThread also returned true on error,
which could cause the updater to proceed without all updates being
downloaded which would then fail at the install stage.