From 5198c20b9fe58a7a167078b2aea1e952585dd268 Mon Sep 17 00:00:00 2001 From: William Xu Date: Sat, 16 Feb 2008 08:56:00 +0000 Subject: (emms-url-quote): Check validity of string parameter S. darcs-hash:20080216085614-cfa61-7ff36e17d340cb138941a82f5e90c8077a3868eb.gz --- emms-url.el | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/emms-url.el b/emms-url.el index 5c7746e..99d7ad7 100644 --- a/emms-url.el +++ b/emms-url.el @@ -61,21 +61,23 @@ Characters in [a-zA-Z_.-/] and SAFE(default is \"\") will never be quoted. e.g., (emms-url-quote \"abc def\") => \"abc%20def\"." - (or safe (setq safe "")) - (save-match-data - (let ((re (if (string-match "]" safe) - ;; `]' should be placed at the beginning inside [] - (format "[]a-zA-Z_.-/%s]" - (emms-replace-regexp-in-string "]" "" safe)) - (format "[a-zA-Z_.-/%s]" safe)))) - (mapconcat - (lambda (c) - (let ((s1 (char-to-string c))) - (if (string-match re s1) - s1 - (format "%%%02x" c)))) - (string-to-list (encode-coding-string s 'utf-8)) - "")))) + (if (not (stringp s)) + "" + (or safe (setq safe "")) + (save-match-data + (let ((re (if (string-match "]" safe) + ;; `]' should be placed at the beginning inside [] + (format "[]a-zA-Z_.-/%s]" + (emms-replace-regexp-in-string "]" "" safe)) + (format "[a-zA-Z_.-/%s]" safe)))) + (mapconcat + (lambda (c) + (let ((s1 (char-to-string c))) + (if (string-match re s1) + s1 + (format "%%%02x" c)))) + (string-to-list (encode-coding-string s 'utf-8)) + ""))))) (defun emms-url-quote-plus (s &optional safe) "Run (emms-url-quote s \" \"), then replace ` ' with `+'." -- cgit v1.2.3