From 1d6fd30afbc283bd03a96a1a753b64b9cc3f3582 Mon Sep 17 00:00:00 2001 From: litlighilit <97860435+litlighilit@users.noreply.github.com> Date: Fri, 9 Jun 2023 21:54:33 +0800 Subject: [PATCH] Update browsers.nim, fix openDefaultBrowser()'s bug (#22052) modified to fix blank page fault. see openDefaultBrowser() The previous implement use "http:about:blank" which will be processed by "prepare" and be considered as a file path, turning to "file://...", which is no doubt beyond expectation. To fix it,firstly the "about:blank" is used instead. Next, a new "openDefaultBrowserImplPrep" proc is added, take place of the previous version of "openDefaultBrowserImpl" --- lib/pure/browsers.nim | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/pure/browsers.nim b/lib/pure/browsers.nim index ab248db365..a98d9d5b8a 100644 --- a/lib/pure/browsers.nim +++ b/lib/pure/browsers.nim @@ -40,15 +40,17 @@ proc prepare(s: string): string = else: result = "file://" & absolutePath(s) -proc openDefaultBrowserImpl(url: string) = +proc openDefaultBrowserImplPrep(url: string) = + ## note the url argument should be alreadly prepared, i.e. the url is passed "AS IS" + when defined(windows): var o = newWideCString(osOpenCmd) - var u = newWideCString(prepare url) + var u = newWideCString(url) discard shellExecuteW(0'i32, o, u, nil, nil, SW_SHOWNORMAL) elif defined(macosx): - discard execShellCmd(osOpenCmd & " " & quoteShell(prepare url)) + discard execShellCmd(osOpenCmd & " " & quoteShell(url)) else: - var u = quoteShell(prepare url) + var u = quoteShell(url) if execShellCmd(osOpenCmd & " " & u) == 0: return for b in getEnv("BROWSER").split(PathSep): try: @@ -58,6 +60,9 @@ proc openDefaultBrowserImpl(url: string) = except OSError: discard +proc openDefaultBrowserImpl(url: string) = + openDefaultBrowserImplPrep(prepare url) + proc openDefaultBrowser*(url: string) = ## Opens `url` with the user's default browser. This does not block. ## The URL must not be empty string, to open on a blank page see `openDefaultBrowser()`. @@ -93,4 +98,4 @@ proc openDefaultBrowser*() {.since: (1, 1).} = ## **See also:** ## ## * https://tools.ietf.org/html/rfc6694#section-3 - openDefaultBrowserImpl("http:about:blank") # See IETF RFC-6694 Section 3. + openDefaultBrowserImplPrep("about:blank") # See IETF RFC-6694 Section 3.