(define-mail-alias): Compensate for not resetting the match data when
authorRichard M. Stallman <rms@gnu.org>
Fri, 15 May 1998 21:50:07 +0000 (21:50 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 15 May 1998 21:50:07 +0000 (21:50 +0000)
string-match fails.

lisp/mail/mailalias.el

index 176bfd8..9d15345 100644 (file)
@@ -334,10 +334,14 @@ if it is quoted with double-quotes."
       ;; double-quotes.  Otherwise, addresses are separated by commas.
       (if from-mailrc-file
          (if (eq ?\" (aref definition start))
-             (progn (string-match "[^\\]\\(\\([\\][\\]\\)*\\)\"[ \t,]*" definition start)
-                    (setq start (1+ start)
-                          end (match-end 1)
-                          convert-backslash t))
+             ;; The following test on `found' compensates for a bug
+             ;; in match-end, which does not return nil when match
+             ;; failed.
+             (let ((found (string-match "[^\\]\\(\\([\\][\\]\\)*\\)\"[ \t,]*"
+                                        definition start)))
+               (setq start (1+ start)
+                     end (and found (match-end 1))
+                     convert-backslash t))
            (setq end (string-match "[ \t,]+" definition start)))
        (setq end (string-match "[ \t\n,]*,[ \t\n,]*" definition start)))
       (let ((temp (substring definition start end))