]> git.eshelyaron.com Git - emacs.git/commitdiff
(save-match-data): Use save-match-data-internal
authorRichard M. Stallman <rms@gnu.org>
Wed, 28 Aug 1996 22:44:18 +0000 (22:44 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 28 Aug 1996 22:44:18 +0000 (22:44 +0000)
as the local variable, instead of an uninterned symbol.

lisp/subr.el

index b68876b66dac334055613d3feb66afcd98aa50f9..31f9e05377f978902699d764d751394690d99395 100644 (file)
@@ -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.