X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-bsd-sockets%2Fsockopt.lisp;h=e44aa84f63b63e84b7988b372742d2f93ef74ba6;hb=32c8edbd49ca77907154987e28e8d3f81f61dabc;hp=2b89066cf347fbcc5729e5181a16ca9a8992a14e;hpb=10d2c05ea44ca0837091434fe2223c0c31687615;p=sbcl.git diff --git a/contrib/sb-bsd-sockets/sockopt.lisp b/contrib/sb-bsd-sockets/sockopt.lisp index 2b89066..e44aa84 100644 --- a/contrib/sb-bsd-sockets/sockopt.lisp +++ b/contrib/sb-bsd-sockets/sockopt.lisp @@ -57,14 +57,14 @@ Code for options that not every system has should be conditionalised: `(progn (export ',lisp-name) (defun ,lisp-name (socket &aux (fd (socket-file-descriptor socket))) - (sb-sys:without-gcing - (let ((buf (make-array sockint::size-of-int - :element-type '(unsigned-byte 8) - :initial-element 0))) - (if (= -1 (sockint::getsockopt - fd ,find-level ,number (sockint::array-data-address buf) ,size)) - (socket-error "getsockopt") - (,mangle-return buf ,size))))) + (let ((buf (make-array sockint::size-of-int + :element-type '(unsigned-byte 8) + :initial-element 0))) + (sb-sys:with-pinned-objects (buf) + (if (= -1 (sockint::getsockopt + fd ,find-level ,number (sb-grovel::array-data-address buf) ,size)) + (socket-error "getsockopt") + (,mangle-return buf ,size))))) (defun (setf ,lisp-name) (new-val socket &aux (fd (socket-file-descriptor socket))) (if (= -1 @@ -82,7 +82,7 @@ Code for options that not every system has should be conditionalised: ;; is a macro and evaluates its second arg at read time (let* ((v (make-array size :element-type '(unsigned-byte 8) :initial-element 0)) - (d (sockint::array-data-address v)) + (d (sb-grovel::array-data-address v)) (alien (sb-alien:sap-alien d; (sb-sys:int-sap d) (* (sb-alien:signed #.(* 8 sockint::size-of-int)))))) @@ -92,7 +92,7 @@ Code for options that not every system has should be conditionalised: (defun buffer-to-int (x size) (declare (ignore size)) (let ((alien (sb-alien:sap-alien - (sockint::array-data-address x) + (sb-grovel::array-data-address x) (* (sb-alien:signed #.(* 8 sockint::size-of-int)))))) (sb-alien:deref alien))) @@ -146,13 +146,13 @@ Code for options that not every system has should be conditionalised: (defun string-to-foreign (string size) (declare (ignore size)) - (let ((data (sockint::array-data-address string))) + (let ((data (sb-grovel::array-data-address string))) (sb-alien:sap-alien data (* t)))) (defun buffer-to-string (x size) (declare (ignore size)) (sb-c-call::%naturalize-c-string - (sockint::array-data-address x))) + (sb-grovel::array-data-address x))) (define-socket-option sockopt-bind-to-device sockint::sol-socket sockint::so-bindtodevice string-to-foreign sockint::ifnamsiz