From: Chong Yidong Date: Fri, 21 Dec 2012 07:51:33 +0000 (+0800) Subject: Make read-char-by-name signal an error for invalid input. X-Git-Tag: emacs-24.3.90~173^2~7^2~535 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=34b4b7eb7e862ef4e39f5d712757acef421a2c2b;p=emacs.git Make read-char-by-name signal an error for invalid input. * international/mule-cmds.el (read-char-by-name): Signal an error if the user does not supply a valid character. * editfns.c (Finsert_char): Since read-char-by-name now signals an error for invalid chars, don't check for a nil return value. Fixes: debbugs:13177 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index cd7dd97315b..a25836da996 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -5,6 +5,9 @@ 2012-12-21 Chong Yidong + * international/mule-cmds.el (read-char-by-name): Signal an error + if the user does not supply a valid character (Bug#13177). + * simple.el (transpose-subr-1): Preserve marker positions by changing the insertion sequence (Bug#13122). diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index f324446fa74..07b0f911cb2 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -2953,14 +2953,18 @@ point or a number in hash notation, e.g. #o21430 for octal, (let ((completion-ignore-case t)) (if (eq action 'metadata) '(metadata (category . unicode-name)) - (complete-with-action action (ucs-names) string pred))))))) - (cond - ((string-match-p "\\`[0-9a-fA-F]+\\'" input) - (string-to-number input 16)) - ((string-match-p "\\`#" input) - (read input)) - (t - (cdr (assoc-string input (ucs-names) t)))))) + (complete-with-action action (ucs-names) string pred)))))) + (char + (cond + ((string-match-p "\\`[0-9a-fA-F]+\\'" input) + (string-to-number input 16)) + ((string-match-p "\\`#" input) + (read input)) + (t + (cdr (assoc-string input (ucs-names) t)))))) + (unless (characterp char) + (error "Invalid character")) + char)) (define-obsolete-function-alias 'ucs-insert 'insert-char "24.3") (define-key ctl-x-map "8\r" 'insert-char) diff --git a/src/ChangeLog b/src/ChangeLog index f9c629c1c56..24f32f141e9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-12-21 Chong Yidong + + * editfns.c (Finsert_char): Since read-char-by-name now signals an + error for invalid chars, don't check for a nil return value. + 2012-12-20 Dmitry Antipov Avoid calls to CHAR_TO_BYTE if byte position is known. diff --git a/src/editfns.c b/src/editfns.c index d7fe1c1c4c4..bb5cc437d9b 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -2361,10 +2361,9 @@ usage: (insert-before-markers-and-inherit &rest ARGS) */) } DEFUN ("insert-char", Finsert_char, Sinsert_char, 1, 3, - "(list (or (read-char-by-name \"Insert character (Unicode name or hex): \")\ - (error \"You did not specify a valid character\"))\ - (prefix-numeric-value current-prefix-arg)\ - t))", + "(list (read-char-by-name \"Insert character (Unicode name or hex): \")\ + (prefix-numeric-value current-prefix-arg)\ + t))", doc: /* Insert COUNT copies of CHARACTER. Interactively, prompt for CHARACTER. You can specify CHARACTER in one of these ways: