allow `(setcar nil nil)' and `(setcdr nil nil)'
authorBrian Templeton <bpt@hcoop.net>
Thu, 22 Jul 2010 20:25:29 +0000 (16:25 -0400)
committerAndy Wingo <wingo@pobox.com>
Tue, 7 Dec 2010 12:21:03 +0000 (13:21 +0100)
* module/language/elisp/runtime/subrs.scm (setcar, setcdr): Allow
  setting the car or cdr of `nil' to `nil'.

Signed-off-by: Andy Wingo <wingo@pobox.com>
module/language/elisp/runtime/subrs.scm

index e01261a..c981b38 100644 (file)
 
 (built-in-func setcar
   (lambda (cell val)
-    (prim set-car! cell val)
+    (if (and (null? cell) (null? val))
+        #nil
+        (prim set-car! cell val))
     val))
 
 (built-in-func setcdr
   (lambda (cell val)
-    (prim set-cdr! cell val)
+    (if (and (null? cell) (null? val))
+        #nil
+        (prim set-cdr! cell val))
     val))
 
 ;;; Accessing symbol bindings for symbols known only at runtime.