From: Jerry J. <log...@gm...> - 2010-05-19 03:41:55
|
I'm doing a little socket programming. I tried to use the CANONNAME slot in the addrinfo structure, and got what appears to be the bytes of the pointer interpreted as characters. I think this patch is needed: diff --git a/contrib/sb-bsd-sockets/constants.lisp b/contrib/sb-bsd-sockets/constants.lisp index 2b131f2..70a75e9 100644 --- a/contrib/sb-bsd-sockets/constants.lisp +++ b/contrib/sb-bsd-sockets/constants.lisp @@ -251,7 +251,7 @@ #+darwin (integer addrlen "socklen_t" "ai_addrlen") #-darwin (integer addrlen "size_t" "ai_addrlen") ((* sockaddr-in) addr "struct sockaddr*" "ai_addr") - (c-string canonname "char *" "ai_canonname") + (c-string-pointer canonname "char *" "ai_canonname") ((* t) next "struct addrinfo*" "ai_next"))) #+sb-bsd-sockets-addrinfo Warning: I haven't actually tried rebuilding SBCL with that patch. Also, I tried redeclaring the type at the prompt, hoping I could get away with that. What I got instead was a complaint that sb-alien::*record-types-already-unparsed* is unbound. Once I setq it to nil, then I got the feared, but expected, notice that I was trying to redefine a type with an incompatible definition. Should that variable have been bound to something already? Regards, -- Jerry James http://www.jamezone.org/ |