emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/search.c,v [EMACS_22_BASE]


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/src/search.c,v [EMACS_22_BASE]
Date: Fri, 16 Nov 2007 22:16:02 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Branch:         EMACS_22_BASE
Changes by:     Stefan Monnier <monnier>        07/11/16 22:16:01

Index: search.c
===================================================================
RCS file: /sources/emacs/emacs/src/search.c,v
retrieving revision 1.221.2.2
retrieving revision 1.221.2.3
diff -u -b -r1.221.2.2 -r1.221.2.3
--- search.c    8 Aug 2007 07:49:13 -0000       1.221.2.2
+++ search.c    16 Nov 2007 22:16:01 -0000      1.221.2.3
@@ -2892,11 +2892,15 @@
   return reuse;
 }
 
-/* Internal usage only:
+/* We used to have an internal use variant of `reseat' described as:
+
    If RESEAT is `evaporate', put the markers back on the free list
-   immediately.  No other references to the markers must exist in this case,
-   so it is used only internally on the unwind stack and save-match-data from
-   Lisp.  */
+      immediately.  No other references to the markers must exist in this
+      case, so it is used only internally on the unwind stack and
+      save-match-data from Lisp.
+
+   But it was ill-conceived: those supposedly-internal markers get exposed via
+   the undo-list, so freeing them here is unsafe.  */
 
 DEFUN ("set-match-data", Fset_match_data, Sset_match_data, 1, 2, 0,
        doc: /* Set internal data on last search match from elements of LIST.
@@ -2981,9 +2985,6 @@
 
            if (!NILP (reseat) && MARKERP (m))
              {
-               if (EQ (reseat, Qevaporate))
-                 free_marker (m);
-               else
                  unchain_marker (XMARKER (m));
                XSETCAR (list, Qnil);
              }
@@ -3002,9 +3003,6 @@
 
            if (!NILP (reseat) && MARKERP (m))
              {
-               if (EQ (reseat, Qevaporate))
-                 free_marker (m);
-               else
                  unchain_marker (XMARKER (m));
                XSETCAR (list, Qnil);
              }
@@ -3069,8 +3067,8 @@
 unwind_set_match_data (list)
      Lisp_Object list;
 {
-  /* It is safe to free (evaporate) the markers immediately.  */
-  return Fset_match_data (list, Qevaporate);
+  /* It is NOT ALWAYS safe to free (evaporate) the markers immediately.  */
+  return Fset_match_data (list, Qt);
 }
 
 /* Called to unwind protect the match data.  */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]