X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-bsd-sockets%2Fsockopt.lisp;h=455779d38df57c3fbd8e7072b70973a9d08b2f2e;hb=3a38ef48c9ae55b932b5639ac9ac3ccd56c7dd9f;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..455779d 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 (sockint::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