Author: ek.kato
Date: Sat Feb 28 17:53:39 2009
New Revision: 5870

Modified:
   trunk/scm/fileio.scm
   trunk/scm/socket.scm
   trunk/uim/socket.c

Log:
* uim/socket.c (c_getaddrinfo) : Don't crash even when network is
  not connected, and return '() in that case.
* scm/socket.scm (call-with-getaddrinfo)
* scm/fileio.scm (call-with-open-file-port)
  - Follow the change in getaddrinfo.


Modified: trunk/scm/fileio.scm
==============================================================================
--- trunk/scm/fileio.scm        (original)
+++ trunk/scm/fileio.scm        Sat Feb 28 17:53:39 2009
@@ -64,7 +64,8 @@
   (fd! port #f))

 (define (call-with-open-file-port fd thunk)
-  (and (< 0 fd)
+  (and (not (null? fd))
+       (< 0 fd)
        (let ((ret (thunk (open-file-port fd))))
          (file-close fd)
          ret)))

Modified: trunk/scm/socket.scm
==============================================================================
--- trunk/scm/socket.scm        (original)
+++ trunk/scm/socket.scm        Sat Feb 28 17:53:39 2009
@@ -66,7 +66,8 @@
 (define (call-with-getaddrinfo hostname servname hints thunk)
   (let* ((res (getaddrinfo hostname servname hints))
          (ret (thunk res)))
-    (freeaddrinfo (car res))
+    (if (not (null? res))
+        (freeaddrinfo (car res)))
     ret))

 (define (call-with-sockaddr-un family path thunk)

Modified: trunk/uim/socket.c
==============================================================================
--- trunk/uim/socket.c  (original)
+++ trunk/uim/socket.c  Sat Feb 28 17:53:39 2009
@@ -244,10 +244,7 @@
   error = getaddrinfo(hostname, servname, hints, &res0);
   if (error) {
     const char *errstr = gai_strerror(error);
-
-    free(servname);
-    uim_notify_fatal("getaddrinfo: %s", gai_strerror(error));
-    ERROR_OBJ(errstr, CONS(hostname_, servname_));
+    uim_notify_fatal("getaddrinfo: %s", errstr);
   }

   free(servname);

Reply via email to