summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2026-02-10 14:59:21 +0000
committerGitHub <noreply@github.com>2026-02-10 14:59:21 +0000
commit339661229dd65161ec904fdc73390316a095bd46 (patch)
tree7b5c66cb38f4f29f279808eebfda69d6adfde3bd
parentff061d177e86435a0d9f5605153a4567e2fcd88b (diff)
desktop/reserved: fix a possible reserved crash (#13207)
-rw-r--r--src/desktop/reserved/ReservedArea.cpp3
-rw-r--r--tests/desktop/Reserved.cpp14
2 files changed, 16 insertions, 1 deletions
diff --git a/src/desktop/reserved/ReservedArea.cpp b/src/desktop/reserved/ReservedArea.cpp
index 07e83a82..8b4956dd 100644
--- a/src/desktop/reserved/ReservedArea.cpp
+++ b/src/desktop/reserved/ReservedArea.cpp
@@ -16,7 +16,8 @@ CReservedArea::CReservedArea(double top, double right, double bottom, double lef
}
CReservedArea::CReservedArea(const CBox& parent, const CBox& child) {
- ASSERT(!parent.empty() && !child.empty());
+ if (parent.empty() || child.empty())
+ return; // empty reserved area
ASSERT(parent.containsPoint(child.pos() + Vector2D{0.0001, 0.0001}));
ASSERT(parent.containsPoint(child.pos() + child.size() - Vector2D{0.0001, 0.0001}));
diff --git a/tests/desktop/Reserved.cpp b/tests/desktop/Reserved.cpp
index 8fbb7172..b3942e32 100644
--- a/tests/desktop/Reserved.cpp
+++ b/tests/desktop/Reserved.cpp
@@ -35,4 +35,18 @@ TEST(Desktop, reservedArea) {
EXPECT_EQ(b.top(), 30 - 10);
EXPECT_EQ(b.right(), 1010 - 920);
EXPECT_EQ(b.bottom(), 1010 - 930);
+
+ Desktop::CReservedArea c{CBox{}, CBox{20, 30, 900, 900}};
+
+ EXPECT_EQ(c.left(), 0);
+ EXPECT_EQ(c.top(), 0);
+ EXPECT_EQ(c.right(), 0);
+ EXPECT_EQ(c.bottom(), 0);
+
+ Desktop::CReservedArea d{CBox{20, 30, 900, 900}, CBox{}};
+
+ EXPECT_EQ(d.left(), 0);
+ EXPECT_EQ(d.top(), 0);
+ EXPECT_EQ(d.right(), 0);
+ EXPECT_EQ(d.bottom(), 0);
} \ No newline at end of file