sbclPackages.cl-ana: fix type error in fixed-mem-cache for SBCL 2.6.0

In cl-ana.makeres, the fixed-mem-cache function uses
(setf (cdr (last cache)) (list id)) where cache can be nil (initial
state or after popping all elements). (last nil) returns nil, making
(setf (cdr nil) ...) undefined. SBCL 2.6.0's stricter type inference
catches this as a type conflict, causing COMPILE-FILE-ERROR.

Replace with nconc which handles the nil case correctly.
This commit is contained in:
Philip Taron
2026-02-16 06:32:35 -08:00
parent ddcc48c352
commit bdd4fb5000
2 changed files with 24 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
Fix type error in fixed-mem-cache for SBCL 2.6.0
cache starts as nil and may be emptied by the loop, so (last cache)
can return nil. (setf (cdr nil) ...) is undefined behavior that
SBCL 2.6.0 now catches as a type conflict during compilation,
causing COMPILE-FILE-ERROR.
Use nconc instead, which handles the nil case correctly.
Upstream issue: https://github.com/ghollisjr/cl-ana/issues/48
--- a/makeres/makeres.lisp
+++ b/makeres/makeres.lisp
@@ -936,5 +936,5 @@
do (unload-target (pop cache))))
(load-target id)
- (setf (cdr (last cache))
- (list id)))))))))
+ (setf cache
+ (nconc cache (list id))))))))))

View File

@@ -191,6 +191,9 @@ let
"iolib/pathnames"
];
});
cl-ana_dot_makeres = super.cl-ana_dot_makeres.overrideLispAttrs (o: {
patches = (o.patches or [ ]) ++ [ ./patches/cl-ana-fix-type-error.patch ];
});
cl-ana_dot_hdf-cffi = super.cl-ana_dot_hdf-cffi.overrideLispAttrs (o: {
nativeBuildInputs = [ pkgs.hdf5 ];
nativeLibs = [ pkgs.hdf5 ];