Eliminate last vestiges of UNWIND-PROTECT.
authorChris Hanson <org/chris-hanson/cph>
Fri, 10 Jan 2003 20:25:05 +0000 (20:25 +0000)
committerChris Hanson <org/chris-hanson/cph>
Fri, 10 Jan 2003 20:25:05 +0000 (20:25 +0000)
v7/src/edwin/bufcom.scm
v7/src/edwin/doscom.scm
v7/src/edwin/dosshell.scm
v7/src/edwin/editor.scm
v7/src/edwin/edtstr.scm
v7/src/edwin/fileio.scm
v7/src/edwin/process.scm
v7/src/edwin/regexp.scm
v7/src/edwin/regops.scm
v7/src/edwin/rmail.scm
v7/src/edwin/struct.scm

index 1a185c820e6b66d3be5f2ff1526c5031a42cecae..864254606d3f2a621b3662f0dfde0a64a2a70684 100644 (file)
@@ -1,25 +1,27 @@
-;;; -*-Scheme-*-
-;;;
-;;; $Id: bufcom.scm,v 1.108 2002/11/20 19:45:58 cph Exp $
-;;;
-;;; Copyright (c) 1986, 1989-2000 Massachusetts Institute of Technology
-;;;
-;;; This file is part of MIT Scheme.
-;;;
-;;; MIT Scheme is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published
-;;; by the Free Software Foundation; either version 2 of the License,
-;;; or (at your option) any later version.
-;;;
-;;; MIT Scheme is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;; General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with MIT Scheme; if not, write to the Free Software
-;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-;;; 02111-1307, USA.
+#| -*-Scheme-*-
+
+$Id: bufcom.scm,v 1.109 2003/01/10 20:24:03 cph Exp $
+
+Copyright 1986,1989,1990,1992,1994,1996 Massachusetts Institute of Technology
+Copyright 1997,1998,1999,2000,2003 Massachusetts Institute of Technology
+
+This file is part of MIT Scheme.
+
+MIT Scheme is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+MIT Scheme is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with MIT Scheme; if not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+|#
 
 ;;;; Buffer Commands
 
@@ -275,14 +277,14 @@ When locked, the buffer's major mode may not be changed."
 
 (define (call-with-temporary-buffer name procedure)
   (let ((buffer))
-    (unwind-protect (lambda ()
-                     (set! buffer (temporary-buffer name)))
-                   (lambda ()
-                     (procedure buffer))
-                   (lambda ()
-                     (kill-buffer buffer)
-                     (set! buffer)
-                     unspecific))))
+    (dynamic-wind (lambda ()
+                   (set! buffer (temporary-buffer name)))
+                 (lambda ()
+                   (procedure buffer))
+                 (lambda ()
+                   (kill-buffer buffer)
+                   (set! buffer)
+                   unspecific))))
 
 (define (temporary-buffer name)
   (let ((buffer (find-or-create-buffer name)))
index 3510e8e42ad985b1bdfc1d2e54c1ed3bd5041b90..738350ec0daaec56a759af92ce0cb2d8700a436b 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Id: doscom.scm,v 1.4 2002/11/20 19:45:59 cph Exp $
+$Id: doscom.scm,v 1.5 2003/01/10 20:24:09 cph Exp $
 
-Copyright (c) 1992-1999 Massachusetts Institute of Technology
+Copyright 1993,2003 Massachusetts Institute of Technology
 
 This file is part of MIT Scheme.
 
@@ -59,7 +59,7 @@ Prefix arg means replace the region with it."
                (mark (current-mark)))
            (let ((swap? (mark< point mark))
                  (temp))
-             (unwind-protect
+             (dynamic-wind
               (lambda ()
                 (set! temp (temporary-buffer " *shell-output*"))
                 unspecific)
index 98b6cfaf3f852d90e5eb46b9c063daa9337e0f36..a94b6410a9a8fe3fef38b1b4cedeaf17d2e368e0 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Id: dosshell.scm,v 1.6 2002/11/20 19:45:59 cph Exp $
+$Id: dosshell.scm,v 1.7 2003/01/10 20:24:15 cph Exp $
 
-Copyright (c) 1992-1999, 2001 Massachusetts Institute of Technology
+Copyright 1993,2001,2003 Massachusetts Institute of Technology
 
 This file is part of MIT Scheme.
 
@@ -167,8 +167,9 @@ With argument, don't skip the prompt -- go straight to column 0."
                (insert-region (line-start start 0) end
                               (buffer-end buffer))))
          (buffer-freshline buffer)
-         (unwind-protect
-          #f
+         (dynamic-wind
+          (lambda ()
+            unspecific)
           (lambda ()
             (pseudo-execute command
                             (buffer-default-directory buffer)
index 4b223885576c977d7dfaaedae36580511cf766eb..0ce4c6a89986f8b450da73cfa54e9604ae59b2af 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: editor.scm,v 1.256 2003/01/10 20:09:36 cph Exp $
+$Id: editor.scm,v 1.257 2003/01/10 20:24:21 cph Exp $
 
 Copyright 1986,1989,1990,1991,1992,1993 Massachusetts Institute of Technology
 Copyright 1994,1995,1996,1997,1998,1999 Massachusetts Institute of Technology
@@ -484,9 +484,6 @@ TRANSCRIPT    messages appear in transcript buffer, if it is enabled;
 (define (exit-scheme)
   (within-continuation editor-abort %exit))
 
-(define (unwind-protect setup body cleanup)
-  (dynamic-wind (or setup (lambda () unspecific)) body cleanup))
-
 (define (editor-grab-display editor receiver)
   (display-type/with-display-grabbed (editor-display-type editor)
     (lambda (with-display-ungrabbed operations)
index 23827687df3cf16f5a6880607af51cbdf79c3b5f..1b127d15132c0c69e7f5f9157d389002662a58d4 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: edtstr.scm,v 1.27 2003/01/10 18:51:17 cph Exp $
+$Id: edtstr.scm,v 1.28 2003/01/10 20:24:27 cph Exp $
 
 Copyright 1989,1990,1991,1992,2003 Massachusetts Institute of Technology
 
@@ -102,7 +102,7 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 (define (with-current-button-event button-event thunk)
   (let ((old-button-event))
-    (unwind-protect
+    (dynamic-wind
      (lambda ()
        (set! old-button-event (editor-button-event current-editor))
        (set-editor-button-event! current-editor button-event)
index 8cb190f50d20c9ceb258ac56ea1d2313b045c9a1..8a821cd383ca343428801189bcdfdb4311955f5a 100644 (file)
@@ -1,25 +1,28 @@
-;;; -*-Scheme-*-
-;;;
-;;; $Id: fileio.scm,v 1.159 2002/11/20 19:46:00 cph Exp $
-;;;
-;;; Copyright (c) 1986, 1989-2002 Massachusetts Institute of Technology
-;;;
-;;; This file is part of MIT Scheme.
-;;;
-;;; MIT Scheme is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published
-;;; by the Free Software Foundation; either version 2 of the License,
-;;; or (at your option) any later version.
-;;;
-;;; MIT Scheme is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;; General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with MIT Scheme; if not, write to the Free Software
-;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-;;; 02111-1307, USA.
+#| -*-Scheme-*-
+
+$Id: fileio.scm,v 1.160 2003/01/10 20:24:33 cph Exp $
+
+Copyright 1986,1989,1991,1992,1993,1994 Massachusetts Institute of Technology
+Copyright 1995,1997,1999,2000,2001,2002 Massachusetts Institute of Technology
+Copyright 2003 Massachusetts Institute of Technology
+
+This file is part of MIT Scheme.
+
+MIT Scheme is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+MIT Scheme is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with MIT Scheme; if not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+|#
 
 ;;;; File <-> Buffer I/O
 
@@ -539,8 +542,9 @@ Otherwise, a message is written both before and after long file writes."
                                 (rename-file pathname old)
                                 (set! modes (file-modes old))
                                 #t))))
-                        (unwind-protect
-                         #f
+                        (dynamic-wind
+                         (lambda ()
+                           unspecific)
                          (lambda ()
                            (clear-visited-file-modification-time! buffer)
                            (write-buffer buffer)
index fe9dd8f262a53c5bf455bf1299244882f70f55ed..7bf116bd06c95f9b44570d6e10a2fee56183464c 100644 (file)
@@ -1,25 +1,27 @@
-;;; -*-Scheme-*-
-;;;
-;;; $Id: process.scm,v 1.62 2002/11/20 19:46:02 cph Exp $
-;;;
-;;; Copyright (c) 1991-2001 Massachusetts Institute of Technology
-;;;
-;;; This file is part of MIT Scheme.
-;;;
-;;; MIT Scheme is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published
-;;; by the Free Software Foundation; either version 2 of the License,
-;;; or (at your option) any later version.
-;;;
-;;; MIT Scheme is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;; General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with MIT Scheme; if not, write to the Free Software
-;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-;;; 02111-1307, USA.
+#| -*-Scheme-*-
+
+$Id: process.scm,v 1.63 2003/01/10 20:24:40 cph Exp $
+
+Copyright 1991,1992,1993,1996,1997,1999 Massachusetts Institute of Technology
+Copyright 2000,2001,2002,2003 Massachusetts Institute of Technology
+
+This file is part of MIT Scheme.
+
+MIT Scheme is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+MIT Scheme is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with MIT Scheme; if not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+|#
 
 ;;;; Subprocess Support
 ;; package: (edwin process)
@@ -678,7 +680,7 @@ Prefix arg means replace the region with it."
                (mark (current-mark)))
            (let ((swap? (mark< point mark))
                  (temp))
-             (unwind-protect
+             (dynamic-wind
               (lambda ()
                 (set! temp (temporary-buffer " *shell-output*"))
                 unspecific)
index 36789b537a722149056a29222a98d9d846e9871b..d660289a4277f7f291eee1ef1ec97a9ce42c98af 100644 (file)
@@ -1,25 +1,27 @@
-;;; -*-Scheme-*-
-;;;
-;;; $Id: regexp.scm,v 1.79 2002/11/20 19:46:02 cph Exp $
-;;;
-;;; Copyright (c) 1986, 1989-2002 Massachusetts Institute of Technology
-;;;
-;;; This file is part of MIT Scheme.
-;;;
-;;; MIT Scheme is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published
-;;; by the Free Software Foundation; either version 2 of the License,
-;;; or (at your option) any later version.
-;;;
-;;; MIT Scheme is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;; General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with MIT Scheme; if not, write to the Free Software
-;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-;;; 02111-1307, USA.
+#| -*-Scheme-*-
+
+$Id: regexp.scm,v 1.80 2003/01/10 20:24:46 cph Exp $
+
+Copyright 1986,1989,1991,1992,1993,1995 Massachusetts Institute of Technology
+Copyright 1996,1997,1999,2001,2002,2003 Massachusetts Institute of Technology
+
+This file is part of MIT Scheme.
+
+MIT Scheme is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+MIT Scheme is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with MIT Scheme; if not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+|#
 
 ;;;; Regular Expressions
 
@@ -89,9 +91,9 @@
 
 (define (preserving-match-data thunk)
   (let ((data unspecific))
-    (unwind-protect (lambda () (set! data (re-match-data)) unspecific)
-                   thunk
-                   (lambda () (set-re-match-data! data)))))
+    (dynamic-wind (lambda () (set! data (re-match-data)) unspecific)
+                 thunk
+                 (lambda () (set-re-match-data! data)))))
 \f
 (define (replace-match replacement #!optional preserve-case? literal?)
   (let ((start (re-match-start 0))
index 36e4a1ddae8e0d30517fa6481002acc2685670e4..6b2cdfda566590c6af591f278f1d372e6ad1feb6 100644 (file)
@@ -1,25 +1,27 @@
-;;; -*-Scheme-*-
-;;;
-;;; $Id: regops.scm,v 1.89 2002/11/20 19:46:02 cph Exp $
-;;;
-;;; Copyright (c) 1986, 1989-2000 Massachusetts Institute of Technology
-;;;
-;;; This file is part of MIT Scheme.
-;;;
-;;; MIT Scheme is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published
-;;; by the Free Software Foundation; either version 2 of the License,
-;;; or (at your option) any later version.
-;;;
-;;; MIT Scheme is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;; General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with MIT Scheme; if not, write to the Free Software
-;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-;;; 02111-1307, USA.
+#| -*-Scheme-*-
+
+$Id: regops.scm,v 1.90 2003/01/10 20:24:52 cph Exp $
+
+Copyright 1986,1989,1991,1992,1993,2000 Massachusetts Institute of Technology
+Copyright 2003 Massachusetts Institute of Technology
+
+This file is part of MIT Scheme.
+
+MIT Scheme is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+MIT Scheme is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with MIT Scheme; if not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+|#
 
 ;;;; Region/Mark Operations
 
 (define (with-region-clipped! new-region thunk)
   (let ((group (region-group new-region))
        (old-region))
-    (unwind-protect (lambda ()
-                     (set! old-region (group-region group))
-                     (region-clip! new-region)
-                     (set! new-region)
-                     unspecific)
-                   thunk
-                   (lambda ()
-                     (region-clip! old-region)))))
+    (dynamic-wind (lambda ()
+                   (set! old-region (group-region group))
+                   (region-clip! new-region)
+                   (set! new-region)
+                   unspecific)
+                 thunk
+                 (lambda ()
+                   (region-clip! old-region)))))
 
 (define (without-group-clipped! group thunk)
   (let ((old-region))
-    (unwind-protect (lambda ()
-                     (set! old-region (group-region group))
-                     (group-widen! group))
-                   thunk
-                   (lambda ()
-                     (region-clip! old-region)))))
+    (dynamic-wind (lambda ()
+                   (set! old-region (group-region group))
+                   (group-widen! group))
+                 thunk
+                 (lambda ()
+                   (region-clip! old-region)))))
 
 (define (group-clipped? group)
   (not (and (zero? (group-start-index group))
index 0845ec2842c3c65ffcf7d2a755a0125b38d69b7c..25ad9f8c39dbb290f282b02209d7c63456b4b598 100644 (file)
@@ -1,25 +1,27 @@
-;;; -*-Scheme-*-
-;;;
-;;; $Id: rmail.scm,v 1.73 2002/11/20 19:46:02 cph Exp $
-;;;
-;;; Copyright (c) 1991-2001 Massachusetts Institute of Technology
-;;;
-;;; This file is part of MIT Scheme.
-;;;
-;;; MIT Scheme is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published
-;;; by the Free Software Foundation; either version 2 of the License,
-;;; or (at your option) any later version.
-;;;
-;;; MIT Scheme is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;; General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with MIT Scheme; if not, write to the Free Software
-;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-;;; 02111-1307, USA.
+#| -*-Scheme-*-
+
+$Id: rmail.scm,v 1.74 2003/01/10 20:24:58 cph Exp $
+
+Copyright 1991,1992,1993,1994,1995,1999 Massachusetts Institute of Technology
+Copyright 2000,2001,2003 Massachusetts Institute of Technology
+
+This file is part of MIT Scheme.
+
+MIT Scheme is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+MIT Scheme is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with MIT Scheme; if not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+|#
 
 ;;;; RMAIL Mail Reader
 
@@ -2131,21 +2133,21 @@ Completion is performed over known labels when reading."
        (outside-end)
        (inside-start (mark-permanent! (group-absolute-start group)))
        (inside-end (mark-permanent! (group-absolute-end group))))
-    (unwind-protect (lambda ()
-                     (set! outside-writeable (group-writeable? group))
-                     (set! outside-start (group-start-mark group))
-                     (set! outside-end (group-end-mark group))
-                     (set-group-writeable?! group inside-writeable)
-                     (set-group-start-mark! group inside-start)
-                     (set-group-end-mark! group inside-end))
-                   thunk
-                   (lambda ()
-                     (set! inside-writeable (group-writeable? group))
-                     (set! inside-start (group-start-mark group))
-                     (set! inside-end (group-end-mark group))
-                     (set-group-writeable?! group outside-writeable)
-                     (set-group-start-mark! group outside-start)
-                     (set-group-end-mark! group outside-end)))))
+    (dynamic-wind (lambda ()
+                   (set! outside-writeable (group-writeable? group))
+                   (set! outside-start (group-start-mark group))
+                   (set! outside-end (group-end-mark group))
+                   (set-group-writeable?! group inside-writeable)
+                   (set-group-start-mark! group inside-start)
+                   (set-group-end-mark! group inside-end))
+                 thunk
+                 (lambda ()
+                   (set! inside-writeable (group-writeable? group))
+                   (set! inside-start (group-start-mark group))
+                   (set! inside-end (group-end-mark group))
+                   (set-group-writeable?! group outside-writeable)
+                   (set-group-start-mark! group outside-start)
+                   (set-group-end-mark! group outside-end)))))
 \f
 ;;;; Constants
 
index af222849c456048b6d64bc34178d7c95c27a98d8..54d5efd72ce4c7b120d4e6e57e7c5033ccbdc7ef 100644 (file)
@@ -1,25 +1,27 @@
-;;; -*-Scheme-*-
-;;;
-;;; $Id: struct.scm,v 1.96 2002/11/20 19:46:03 cph Exp $
-;;;
-;;; Copyright (c) 1985, 1989-2001 Massachusetts Institute of Technology
-;;;
-;;; This file is part of MIT Scheme.
-;;;
-;;; MIT Scheme is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published
-;;; by the Free Software Foundation; either version 2 of the License,
-;;; or (at your option) any later version.
-;;;
-;;; MIT Scheme is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;; General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with MIT Scheme; if not, write to the Free Software
-;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-;;; 02111-1307, USA.
+#| -*-Scheme-*-
+
+$Id: struct.scm,v 1.97 2003/01/10 20:25:05 cph Exp $
+
+Copyright 1985,1989,1990,1991,1992,1993 Massachusetts Institute of Technology
+Copyright 1994,1999,2000,2001,2003 Massachusetts Institute of Technology
+
+This file is part of MIT Scheme.
+
+MIT Scheme is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
+
+MIT Scheme is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with MIT Scheme; if not, write to the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+|#
 
 ;;;; Text Data Structures
 
        (old-text-end)
        (new-text-start (make-permanent-mark group start #f))
        (new-text-end (make-permanent-mark group end #t)))
-    (unwind-protect (lambda ()
-                     (set! old-text-start (group-start-mark group))
-                     (set! old-text-end (group-end-mark group))
-                     (set-group-start-mark! group new-text-start)
-                     (set-group-end-mark! group new-text-end))
-                   thunk
-                   (lambda ()
-                     (set! new-text-start (group-start-mark group))
-                     (set! new-text-end (group-end-mark group))
-                     (set-group-start-mark! group old-text-start)
-                     (set-group-end-mark! group old-text-end)))))
+    (dynamic-wind (lambda ()
+                   (set! old-text-start (group-start-mark group))
+                   (set! old-text-end (group-end-mark group))
+                   (set-group-start-mark! group new-text-start)
+                   (set-group-end-mark! group new-text-end))
+                 thunk
+                 (lambda ()
+                   (set! new-text-start (group-start-mark group))
+                   (set! new-text-end (group-end-mark group))
+                   (set-group-start-mark! group old-text-start)
+                   (set-group-end-mark! group old-text-end)))))
 
 (define (group-text-clip group start end)
   (let ((start (make-permanent-mark group start #f))