changeset 94330:52fb31c78b25

(isearch-search-string): Avoid string-bytes and aset.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 24 Apr 2008 17:59:51 +0000
parents 22f1fdbf5cde
children 6d85304f4f12
files lisp/ChangeLog lisp/isearch.el
diffstat 2 files changed, 11 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Thu Apr 24 17:59:13 2008 +0000
+++ b/lisp/ChangeLog	Thu Apr 24 17:59:51 2008 +0000
@@ -1,5 +1,7 @@
 2008-04-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* isearch.el (isearch-search-string): Avoid string-bytes and aset.
+
 	* international/quail.el (quail-build-decode-map): Avoid string-bytes.
 
 	* textmodes/ispell.el (ispell-dictionary-alist-1)
--- a/lisp/isearch.el	Thu Apr 24 17:59:13 2008 +0000
+++ b/lisp/isearch.el	Thu Apr 24 17:59:51 2008 +0000
@@ -2137,13 +2137,15 @@
 	pos1 pos2)
     (setq pos1 (save-excursion (funcall func string bound noerror)))
     (if (and (char-table-p translation-table-for-input)
-	     (> (string-bytes string) len))
-	(let (translated match-data)
-	  (dotimes (i len)
-	    (let ((x (aref translation-table-for-input (aref string i))))
-	      (when x
-		(or translated (setq translated (copy-sequence string)))
-		(aset translated i x))))
+             (multibyte-string-p string)
+             ;; Minor optimization.
+             (string-match-p "[^[:ascii:]]" string))
+	(let ((translated
+               (apply 'string
+                      (mapcar (lambda (c)
+                                (or (aref translation-table-for-input c) c))
+                              string)))
+              match-data)
 	  (when translated
 	    (save-match-data
 	      (save-excursion