From d0c2714c033b010cbd174138638881dc65abef06 Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Tue, 13 Oct 2020 16:16:10 +0100 Subject: fix(op_crates/web/url): apply backslash replacement to the pathname setter (#7937) --- cli/tests/unit/url_test.ts | 2 ++ op_crates/web/11_url.js | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cli/tests/unit/url_test.ts b/cli/tests/unit/url_test.ts index e9632c7de..7c8cd3796 100644 --- a/cli/tests/unit/url_test.ts +++ b/cli/tests/unit/url_test.ts @@ -192,6 +192,8 @@ unitTest(function urlModifyPathname(): void { // deno-lint-ignore no-self-assign url.pathname = url.pathname; assertEquals(url.pathname, "/baz%23qat%20qux"); + url.pathname = "\\a\\b\\c"; + assertEquals(url.pathname, "/a/b/c"); }); unitTest(function urlModifyHash(): void { diff --git a/op_crates/web/11_url.js b/op_crates/web/11_url.js index fe7ef041a..f2d12f5be 100644 --- a/op_crates/web/11_url.js +++ b/op_crates/web/11_url.js @@ -378,7 +378,7 @@ return null; } [parts.path, restUrl] = takePattern(restUrl, /^([^?#]*)/); - parts.path = encodePathname(parts.path.replace(/\\/g, "/")); + parts.path = encodePathname(parts.path); if (usedNonBase) { parts.path = normalizePath(parts.path, parts.protocol == "file"); } else { @@ -870,7 +870,9 @@ } function encodePathname(s) { - return [...s].map((c) => (charInPathSet(c) ? encodeChar(c) : c)).join(""); + return [...s.replace(/\\/g, "/")].map(( + c, + ) => (charInPathSet(c) ? encodeChar(c) : c)).join(""); } function encodeSearch(s, isSpecial) { -- cgit v1.2.3