summaryrefslogtreecommitdiff
path: root/Lisp/memory-management.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2008-02-11 17:34:57 +0100
committerMatthias Benkard <code@mail.matthias.benkard.de>2008-02-11 17:34:57 +0100
commite75a694b028cd8f7e378929fe95dd6ca355b1051 (patch)
tree22f1c472216e1be744125674d3e687a6451f6801 /Lisp/memory-management.lisp
parent38747051bbe8bf893363c99374118e237e252cb7 (diff)
Specialise MAKE-LOAD-FORM for pointer wrappers.
darcs-hash:4a9e629e6e9a9e20d21c80c541e70b4b6a810645
Diffstat (limited to 'Lisp/memory-management.lisp')
-rw-r--r--Lisp/memory-management.lisp7
1 files changed, 7 insertions, 0 deletions
diff --git a/Lisp/memory-management.lisp b/Lisp/memory-management.lisp
index 1d652ae..4829a1e 100644
--- a/Lisp/memory-management.lisp
+++ b/Lisp/memory-management.lisp
@@ -24,6 +24,13 @@
(defun make-pointer-wrapper (class &rest initargs &key pointer &allow-other-keys)
+ (when (or (null-pointer-p pointer)
+ (pointer-eq (objcl-get-nil) pointer))
+ (return-from make-pointer-wrapper
+ ;; We can't simply return +NIL+ here, because this function might
+ ;; be called at load-time (see the MAKE-LOAD-FORM methods in
+ ;; data-types.lisp).
+ (make-instance 'id :pointer (objcl-get-nil))))
(when (not (eq 'selector class))
(cond ((%objcl-object-is-meta-class pointer)
(return-from make-pointer-wrapper