~ chicken-core (chicken-5) ee62f799c536b80924897a5b064bc001102ae242


commit ee62f799c536b80924897a5b064bc001102ae242
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Mon Feb 15 20:49:43 2016 +0100
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Wed Feb 17 12:41:05 2016 +1300

    Replace strndup() with strdup() for compat reasons
    
    This is the only thing preventing successful build for MingW on Vista.
    
    Also fix the default port, if only a plain hostname was supplied in the
    CHICKEN_DEBUGGER environment variable.  Before, it would have been
    reading an uninitialized variable and always copying the full string as
    a host name due to an unintended cast to unsigned because of a bad stop
    condition in the loop.
    
    Signed-off-by: Evan Hanson <evhan@foldling.org>

diff --git a/dbg-stub.c b/dbg-stub.c
index c340e457..58c4205c 100644
--- a/dbg-stub.c
+++ b/dbg-stub.c
@@ -485,7 +485,7 @@ connect_to_debugger()
   static char info[ 256 ];
   struct hostent *he;
   struct sockaddr_in sa;
-  int i, port;
+  int i, port = DEFAULT_DEBUGGER_PORT;
   int yes = 1;
   int r;
 
@@ -494,14 +494,15 @@ connect_to_debugger()
   if(addr == NULL) return C_SCHEME_FALSE;      /* no debugger address given */
 
   /* parse host and port number */
-  for(i = C_strlen(addr) - 1; i >= 0; --i) {
+  for(i = C_strlen(addr) - 1; i > 0; --i) {
     if(addr[ i ] == ':') break;
   }
 
   if(i == 0) host = addr;
   else {
     port = atoi(addr + i + 1);
-    host = strndup(addr, i);
+    host = C_strdup(addr);
+    addr[i] = '\0';    /* We don't use strndup() for compat reasons */
   }
 
 #ifdef _WIN32
Trap