Author: ehuelsmann Date: Wed Jul 25 16:07:31 2007 New Revision: 278
Modified: usocket/trunk/backend/sbcl.lisp Log: make_simple_base_string() takes ownership of the string. Don't use a stack allocated string, but rather, duplicate it on the heap using strndup(). And other fixes.
Modified: usocket/trunk/backend/sbcl.lisp ============================================================================== --- usocket/trunk/backend/sbcl.lisp (original) +++ usocket/trunk/backend/sbcl.lisp Wed Jul 25 16:07:31 2007 @@ -45,10 +45,12 @@ "#ifndef FD_SETSIZE" "#define FD_SETSIZE 1024" "#endif" - "#include <winsock2.h>" - ) + "#include <winsock2.h>") + (ffi:clines - "#include <ecl/ecl-inl.h>") + "#include <ecl/ecl-inl.h>" + "#include <string.h>") + #+:prefixed-api (ffi:clines "#define CONS(x, y) ecl_cons((x), (y))" @@ -57,23 +59,22 @@ (ffi:clines "#define CONS(x, y) make_cons((x), (y))" "#define MAKE_INTEGER(x) make_integer((x))") -
(defun fd-setsize () - (ffi:c-inline () () fixnum + (ffi:c-inline () () :fixnum "FD_SETSIZE" :one-liner t))
(defun get-host-name () (ffi:c-inline - () () t + () () :object "{ char buf[256]; int r = gethostname(&buf,256);
if (r == 0) - @(return) = make_simple_base_string(&buf); + @(return) = make_simple_base_string(strndup(&buf,255)); else @(return) = Cnil; - }")) + }" :one-liner nil :side-effects nil))
(defun read-select (read-fds to-secs &optional (to-musecs 0)) (ffi:c-inline (read-fds to-secs to-musecs) (t t :unsigned-int) t