patch qtbase wayland client to fix screen use-after-free crash
This commit is contained in:
parent
d821500db7
commit
8ad32c631a
2 changed files with 141 additions and 2 deletions
19
flake.nix
19
flake.nix
|
|
@ -36,12 +36,26 @@
|
|||
programs.taplo.enable = true;
|
||||
programs.keep-sorted.enable = true;
|
||||
};
|
||||
# Patch qtbase wayland client to fix use-after-free in QWaylandSurface::oldestEnteredScreen.
|
||||
# Waiting screens deleted via registry_global_remove leave dangling pointers in surface
|
||||
# m_screens lists, crashing on the next screensChanged signal. Track surfaces in the
|
||||
# display and scrub references before any screen deletion.
|
||||
# TODO: remove once fixed upstream in Qt
|
||||
qtbaseOverlay = final: prev: {
|
||||
qt6 = prev.qt6.overrideScope (
|
||||
qtFinal: qtPrev: {
|
||||
qtbase = qtPrev.qtbase.overrideAttrs (old: {
|
||||
patches = (old.patches or [ ]) ++ [ ./nix/patches/qtbase-wayland-screen-uaf.patch ];
|
||||
});
|
||||
}
|
||||
);
|
||||
};
|
||||
forAllSystems =
|
||||
fn:
|
||||
nixpkgs.lib.genAttrs systems (
|
||||
system:
|
||||
fn rec {
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
pkgs = (nixpkgs.legacyPackages.${system}).extend qtbaseOverlay;
|
||||
treefmt-eval = treefmt-nix.lib.evalModule pkgs treefmt-config;
|
||||
}
|
||||
);
|
||||
|
|
@ -52,7 +66,8 @@
|
|||
packages = forAllSystems (
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
qs = quickshell.packages.${pkgs.stdenv.hostPlatform.system}.default.override {
|
||||
# Rebuild quickshell against patched Qt via its overlay
|
||||
qs = (pkgs.extend quickshell.overlays.default).quickshell.override {
|
||||
withX11 = false;
|
||||
withI3 = false;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue