projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.38.9: Integer callback result fixes.
[sbcl.git]
/
src
/
code
/
host-c-call.lisp
diff --git
a/src/code/host-c-call.lisp
b/src/code/host-c-call.lisp
index
eb12c39
..
d688879
100644
(file)
--- 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
(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
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
;; 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
;; 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))
(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))
(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))
`(etypecase ,value
(null (int-sap 0))
((alien (* char)) (alien-sap ,value))