[education/rkward] rkward/rbackend/rkwarddevice: Fix potential (rare) crash while closing RK device
Thomas Friedrichsmeier
null at kde.org
Mon Sep 22 17:37:36 BST 2025
Git commit 8e82025421a0ce3fd40aba662ca2145043be1460 by Thomas Friedrichsmeier.
Committed on 22/09/2025 at 16:37.
Pushed by tfry into branch 'master'.
Fix potential (rare) crash while closing RK device
M +3 -1 rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp
https://invent.kde.org/education/rkward/-/commit/8e82025421a0ce3fd40aba662ca2145043be1460
diff --git a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp
index a720a5229..bef40a3f5 100644
--- a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp
+++ b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp
@@ -442,13 +442,15 @@ static void RKD_Close(pDevDesc dev) {
{
RKGraphicsDataStreamWriteGuard guard;
WRITE_HEADER(RKDClose, dev);
- delete static_cast<RKGraphicsDeviceDesc *>(dev->deviceSpecific);
}
{
RKGraphicsDataStreamReadGuard rguard;
qint8 dummy;
RKD_IN_STREAM >> dummy;
}
+ // NOTE: RKGraphicsDataStreamReadGuard does event processing, which may include an RK.resize()->RKD_AdjustSize (and GEgetDevice will
+ // still return non-null at this point), so do not delete too early
+ delete static_cast<RKGraphicsDeviceDesc *>(dev->deviceSpecific);
}
static void RKD_Clip(double left, double right, double top, double bottom, pDevDesc dev) {
More information about the rkward-tracker
mailing list