]> code.delx.au - gnu-emacs/commitdiff
(isearch-search-string): Avoid string-bytes and aset.
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 24 Apr 2008 17:59:51 +0000 (17:59 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 24 Apr 2008 17:59:51 +0000 (17:59 +0000)
lisp/ChangeLog
lisp/isearch.el

index c9f57f0aae3b5d7e2b0715463df46bf00a9f33a0..ddb6b68e9e4501f8e600a051486e1ddeb0caac36 100644 (file)
@@ -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)
index ef6321be02c7e2304506739d046cef301fd70b2f..920b999c18588de4b3792bcd21664e994337f00b 100644 (file)
@@ -2137,13 +2137,15 @@ Can be changed via `isearch-search-fun-function' for special needs."
        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