From e2a2f1bc5a082fae256454235373e1821ba7974c Mon Sep 17 00:00:00 2001
From: ram <ram>
Date: Thu, 14 Jun 1990 14:18:57 +0000
Subject: [PATCH] Fixed a bug in SSET-UNION-OF-DIFFERENCE that prevented the
 difference from really happening most of the time.

---
 compiler/sset.lisp | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/compiler/sset.lisp b/compiler/sset.lisp
index d59eb71fd..a703973bc 100644
--- a/compiler/sset.lisp
+++ b/compiler/sset.lisp
@@ -126,11 +126,11 @@
 	((null el1) t)
       (let ((num1 (sset-element-number (car el1))))
 	(loop
-	 (when (null el2) (return-from sset-subsetp nil))
-	 (let ((num2 (sset-element-number (pop el2))))
-	   (when (>= num2 num1)
-	     (when (> num2 num1) (return-from sset-subsetp nil))
-	     (return))))))))
+	  (when (null el2) (return-from sset-subsetp nil))
+	  (let ((num2 (sset-element-number (pop el2))))
+	    (when (>= num2 num1)
+	      (when (> num2 num1) (return-from sset-subsetp nil))
+	      (return))))))))
 
 
 ;;; SSet-Equal  --  Interface
@@ -275,6 +275,7 @@
 			  (when (null el3)
 			    (setf (cdr prev-el1) (copy-list el2))
 			    (return-from sset-union-of-difference t))
+			  (setq num3 (sset-element-number (car el3)))
 			  (when (<= num2 num3)
 			    (unless (= num2 num3)
 			      (let ((new (cons e el1)))
-- 
GitLab