From 83013d8acee311f521ebcfe41d86d50a02e6f724 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Thu, 27 Feb 2025 16:48:02 +0000 Subject: [PATCH] Avoid out of bounds access when dismissing overlay stack --- internal/driver/common/canvas.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/driver/common/canvas.go b/internal/driver/common/canvas.go index ed0e185c3b..4e01470079 100644 --- a/internal/driver/common/canvas.go +++ b/internal/driver/common/canvas.go @@ -531,6 +531,12 @@ func (o *overlayStack) add(overlay fyne.CanvasObject) { func (o *overlayStack) remove(overlay fyne.CanvasObject) { o.OverlayStack.Remove(overlay) overlayCount := len(o.List()) + + // it is possible that overlays are removed implicitly and render caches already cleared out + if overlayCount >= len(o.renderCaches) { + return + } + o.renderCaches[overlayCount] = nil // release memory reference to removed element o.renderCaches = o.renderCaches[:overlayCount] }