From c244eeb21f203fd60f2b3520a7ba517fe81dfec3 Mon Sep 17 00:00:00 2001 From: Etesam Date: Tue, 1 Jul 2025 15:27:38 -0400 Subject: [PATCH] fixed bug with nil window in processURLRequest (#4366) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fixed bug with nil window in processURLRequest * added row to changelog and added log * removed old code * Fix getWindowForID undefined error in processURLRequest Replace non-existent globalApplication.getWindowForID() call with the correct globalApplication.Window.GetByID() method. This fixes the compilation error while preserving the nil check functionality that was intended in the original PR. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude * Add explicit nil check for safer window validation Add an additional nil check alongside the boolean check from GetByID() to handle edge cases where a window interface could theoretically be nil even when the lookup indicates success. This provides defense in depth against nil pointer dereferences. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude * Change window not found log to debug level Use globalApplication.debug() instead of log.Println() for missing window ID messages. This is more appropriate as it's diagnostic information rather than a user-facing error. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude * Remove unused log import Remove the "log" import that is no longer needed after switching to globalApplication.debug() for logging. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --------- Co-authored-by: Lea Anthony Co-authored-by: Claude --- docs/src/content/docs/changelog.mdx | 1 + v3/pkg/application/application_darwin.go | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/src/content/docs/changelog.mdx b/docs/src/content/docs/changelog.mdx index 633bb9035..ae93b2eb2 100644 --- a/docs/src/content/docs/changelog.mdx +++ b/docs/src/content/docs/changelog.mdx @@ -114,6 +114,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed nil pointer dereference in processURLRequest for Mac by [@etesam913](https://github.com/etesam913) in [#4366](https://github.com/wailsapp/wails/pull/4366) - Fixed a linux bug preventing filtered dialogs by [@bh90210](https://github.com/bh90210) in [#4287](https://github.com/wailsapp/wails/pull/4287) - Fixed Windows+Linux Edit Menu issues by [@leaanthony](https://github.com/leaanthony) in [#3f78a3a](https://github.com/wailsapp/wails/commit/3f78a3a8ce7837e8b32242c8edbbed431c68c062) - Updated the minimum system version in macOS .plist files from 10.13.0 to 10.15.0 by [@AkshayKalose](https://github.com/AkshayKalose) in [#3981](https://github.com/wailsapp/wails/pull/3981) diff --git a/v3/pkg/application/application_darwin.go b/v3/pkg/application/application_darwin.go index 9412ddc17..0fa8fa64e 100644 --- a/v3/pkg/application/application_darwin.go +++ b/v3/pkg/application/application_darwin.go @@ -314,15 +314,16 @@ func processMessage(windowID C.uint, message *C.char) { //export processURLRequest func processURLRequest(windowID C.uint, wkUrlSchemeTask unsafe.Pointer) { + window, ok := globalApplication.Window.GetByID(uint(windowID)) + if !ok || window == nil { + globalApplication.debug("could not find window with id: %d", windowID) + return + } + webviewRequests <- &webViewAssetRequest{ Request: webview.NewRequest(wkUrlSchemeTask), windowId: uint(windowID), - windowName: func() string { - if window, ok := globalApplication.Window.GetByID(uint(windowID)); ok { - return window.Name() - } - return "" - }(), + windowName: window.Name(), } }