[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