diff --git a/code/c-call.lisp b/code/c-call.lisp index cd98a2b198f8f333cea28ed6956288e5c1edf83c..b5d7027050b1f36061baf5673da7f2fb59f2249b 100644 --- a/code/c-call.lisp +++ b/code/c-call.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/c-call.lisp,v 1.8 1992/02/14 23:44:18 wlott Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/c-call.lisp,v 1.9 1992/02/21 17:57:59 wlott Exp $") ;;; ;;; ********************************************************************** ;;; @@ -56,15 +56,19 @@ (def-alien-type-method (c-string :lisp-rep) (type) (declare (ignore type)) - 'simple-base-string) + '(or simple-base-string null)) (def-alien-type-method (c-string :naturalize-gen) (type alien) (declare (ignore type)) - `(%naturalize-c-string ,alien)) + `(if (zerop (sap-int ,alien)) + nil + (%naturalize-c-string ,alien))) (def-alien-type-method (c-string :deport-gen) (type value) (declare (ignore type)) - `(vector-sap ,value)) + `(etypecase ,value + (null (int-sap 0)) + (simple-base-string (vector-sap ,value)))) (defun %naturalize-c-string (sap) (declare (type system-area-pointer sap))