From: Richard M. Stallman Date: Wed, 28 Aug 1996 22:44:18 +0000 (+0000) Subject: (save-match-data): Use save-match-data-internal X-Git-Tag: emacs-20.1~3989 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c7ca41e69f379b1c1a21e255d1798c9a712803df;p=emacs.git (save-match-data): Use save-match-data-internal as the local variable, instead of an uninterned symbol. --- diff --git a/lisp/subr.el b/lisp/subr.el index b68876b66da..31f9e05377f 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -740,13 +740,18 @@ Wildcards and redirection are handled as usual in the shell." (start-process name buffer shell-file-name shell-command-switch (mapconcat 'identity args " "))))) +(defvar save-match-data-internal) + +;; We use save-match-data-internal as the local variable because +;; that works ok in practice (people should not use that variable elsewhere). +;; We used to use an uninterned symbol; the compiler handles that properly +;; now, but it generates slower code. (defmacro save-match-data (&rest body) "Execute the BODY forms, restoring the global value of the match data." - (let ((original (make-symbol "match-data"))) - (list 'let (list (list original '(match-data))) - (list 'unwind-protect - (cons 'progn body) - (list 'store-match-data original))))) + `(let ((save-match-data-variable '(match-data))) + (unwind-protect + (progn ,@body) + (store-match-data save-match-data-variable))))) (defun match-string (num &optional string) "Return string of text matched by last search.