[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 8448782 3/4: Fix encoding in browse-url-encode-url
From: |
Lars Ingebrigtsen |
Subject: |
master 8448782 3/4: Fix encoding in browse-url-encode-url |
Date: |
Tue, 7 Sep 2021 11:47:02 -0400 (EDT) |
branch: master
commit 8448782b40d0e186eb1cb094e0eea86370330d7e
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Fix encoding in browse-url-encode-url
* lisp/net/browse-url.el (browse-url-url-encode-chars): Document
what the argument really is, and simplify the implementation
(bug#50435).
(browse-url-encode-url): Encode spaces.
---
lisp/net/browse-url.el | 17 ++++++-----------
test/lisp/net/browse-url-tests.el | 8 ++++----
2 files changed, 10 insertions(+), 15 deletions(-)
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index 73b8c43..b8e1f1b 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -692,16 +692,11 @@ alist is deprecated. Use `browse-url-handlers' instead.")
(defun browse-url-url-encode-chars (text chars)
"URL-encode the chars in TEXT that match CHARS.
-CHARS is a regexp-like character alternative (e.g., \"[)$]\")."
- (let ((encoded-text (copy-sequence text))
- (s 0))
- (while (setq s (string-match chars encoded-text s))
- (setq encoded-text
- (replace-match (format "%%%X"
- (string-to-char (match-string 0
encoded-text)))
- t t encoded-text)
- s (1+ s)))
- encoded-text))
+CHARS is a regexp that matches a character."
+ (replace-regexp-in-string chars
+ (lambda (s)
+ (format "%%%X" (string-to-char s)))
+ text))
(defun browse-url-encode-url (url)
"Escape annoying characters in URL.
@@ -710,7 +705,7 @@ regarding its parameter treatment."
;; FIXME: Is there an actual example of a web browser getting
;; confused? (This used to encode commas, but at least Firefox
;; handles commas correctly and doesn't accept encoded commas.)
- (browse-url-url-encode-chars url "[\")$] "))
+ (browse-url-url-encode-chars url "[\"()$ ]"))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; URL input
diff --git a/test/lisp/net/browse-url-tests.el
b/test/lisp/net/browse-url-tests.el
index 898bef8..4264e03 100644
--- a/test/lisp/net/browse-url-tests.el
+++ b/test/lisp/net/browse-url-tests.el
@@ -68,11 +68,11 @@
(ert-deftest browse-url-tests-encode-url ()
(should (equal (browse-url-encode-url "") ""))
- (should (equal (browse-url-encode-url "a b c") "a b c"))
+ (should (equal (browse-url-encode-url "a b c") "a%20b%20c"))
(should (equal (browse-url-encode-url "\"a\" \"b\"")
- "\"a%22\"b\""))
- (should (equal (browse-url-encode-url "(a) (b)") "(a%29(b)"))
- (should (equal (browse-url-encode-url "a$ b$") "a%24b$")))
+ "%22a%22%20%22b%22"))
+ (should (equal (browse-url-encode-url "(a) (b)") "%28a%29%20%28b%29"))
+ (should (equal (browse-url-encode-url "a$ b$") "a%24%20b%24")))
(ert-deftest browse-url-tests-url-at-point ()
(with-temp-buffer