X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fhost-c-call.lisp;h=d688879ee1222ae00eabd7d8079935efb9c7734b;hb=f59b6f1f0406f2bbcbec4fa712c0e6d5df06e737;hp=eb12c398d7fb5b0b59baef3d5d2a3185617a3497;hpb=6fa968aaa8051da23cc3153a1c0e67addbea85f6;p=sbcl.git diff --git a/src/code/host-c-call.lisp b/src/code/host-c-call.lisp index eb12c39..d688879 100644 --- a/src/code/host-c-call.lisp +++ b/src/code/host-c-call.lisp @@ -44,6 +44,8 @@ (defun c-string-needs-conversion-p (type) #+sb-xc-host + (declare (ignore type)) + #+sb-xc-host t #-sb-xc-host (let ((external-format (sb!impl::get-external-format @@ -53,11 +55,11 @@ ;; changes. (alien-c-string-type-external-format type)))) (not (and external-format - (or (eq (caar external-format) :ascii) + (or (eq (first (sb!impl::ef-names external-format)) :ascii) ;; On non-SB-UNICODE all latin-1 codepoints will fit ;; into a base-char, on SB-UNICODE they won't. #!-sb-unicode - (eq (caar external-format) :latin-1)))))) + (eq (first (sb!impl::ef-names external-format)) :latin-1)))))) (define-alien-type-method (c-string :naturalize-gen) (type alien) `(if (zerop (sap-int ,alien)) @@ -82,6 +84,8 @@ (define-alien-type-method (c-string :deport-gen) (type value) (declare (ignore type)) + ;; This SAP taking is safe as DEPORT callers pin the VALUE when + ;; necessary. `(etypecase ,value (null (int-sap 0)) ((alien (* char)) (alien-sap ,value))