summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Templeton <bpt@hcoop.net>2010-07-22 16:25:29 -0400
committerAndy Wingo <wingo@pobox.com>2010-12-07 13:21:03 +0100
commitb41a673d2647eef7ff43469ed864bd584fcd9be2 (patch)
treeedfddc796739a6d54310616e4ea53c801c52722e
parentb7966c10efaaaf95e3a6fe300e79d9c3c195bde5 (diff)
downloadguile-b41a673d2647eef7ff43469ed864bd584fcd9be2.tar.gz
allow `(setcar nil nil)' and `(setcdr nil nil)'
* 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>
-rw-r--r--module/language/elisp/runtime/subrs.scm8
1 files changed, 6 insertions, 2 deletions
diff --git a/module/language/elisp/runtime/subrs.scm b/module/language/elisp/runtime/subrs.scm
index e01261a97..c981b3819 100644
--- a/module/language/elisp/runtime/subrs.scm
+++ b/module/language/elisp/runtime/subrs.scm
@@ -265,12 +265,16 @@
(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.