Changed SORT to return a newly allocated list (as specified in the
authorStephen Adams <edu/mit/csail/zurich/adams>
Wed, 4 Dec 1996 16:21:42 +0000 (16:21 +0000)
committerStephen Adams <edu/mit/csail/zurich/adams>
Wed, 4 Dec 1996 16:21:42 +0000 (16:21 +0000)
reference manual) in the case of a singleton list.

v7/src/runtime/msort.scm

index 1f0ed5fe78ab011efce25f7e73d1eada192d1a41..4a7bde0091b508d3192d684234635a5a50e5635b 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: msort.scm,v 14.3 1996/12/01 17:23:03 adams Exp $
+$Id: msort.scm,v 14.4 1996/12/04 16:21:42 adams Exp $
 
 Copyright (c) 1988-1996 Massachusetts Institute of Technology
 
@@ -59,10 +59,14 @@ MIT in each case. |#
           (cons (car one)
                 (merge (cdr one) two)))))
 
-  (cond ((or (pair? obj) (null? obj))
-        (loop obj))
+  (cond ((pair? obj)
+        (if (null? (cdr obj))
+            (list (car obj))           ; must return newly allocated list
+            (loop obj)))
        ((vector? obj)
         (sort! (vector-copy obj) pred))
+       ((null? obj)
+        '())
        (else
         (error:wrong-type-argument obj "list or vector" 'SORT))))
 \f