diff --git a/utils/solvers/c++/GmshClient.h b/utils/solvers/c++/GmshClient.h
index 6a2f00fd8068590fbcd9feb98c7779eef254a2ba..9c0b0ae1eee8fda5c3b0521535a04b8c08a6b0f1 100644
--- a/utils/solvers/c++/GmshClient.h
+++ b/utils/solvers/c++/GmshClient.h
@@ -135,8 +135,9 @@ class GmshClient {
 	return -1;  // Error: Couldn't create socket
       // try to connect socket to given name
       struct sockaddr_un addr_un;
-      strcpy(addr_un.sun_path, sockname);
+      memset((char *) &addr_un, 0, sizeof(addr_un));
       addr_un.sun_family = AF_UNIX;
+      strcpy(addr_un.sun_path, sockname);
       for(int tries = 0; tries < 5; tries++) {
 	if(connect(_sock, (struct sockaddr *)&addr_un, sizeof(addr_un)) >= 0)
 	  return _sock;
diff --git a/utils/solvers/c/GmshClient.c b/utils/solvers/c/GmshClient.c
index f0bd8909cfd2c38217a520bd95d15624c368cb2a..54aa3d93443eb661d96bc3f69f236cf258462831 100644
--- a/utils/solvers/c/GmshClient.c
+++ b/utils/solvers/c/GmshClient.c
@@ -1,4 +1,4 @@
-/* $Id: GmshClient.c,v 1.5 2006-02-25 00:15:01 geuzaine Exp $ */
+/* $Id: GmshClient.c,v 1.6 2006-02-25 19:07:50 geuzaine Exp $ */
 /*
  * Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
  *
@@ -131,8 +131,9 @@ int Gmsh_Connect(char *sockname)
     if(sock < 0)
       return -1; /* Error: Couldn't create socket */
     /* try to connect socket to given name */
-    strcpy(addr_un.sun_path, sockname);
+    memset((char *) &addr_un, 0, sizeof(addr_un));
     addr_un.sun_family = AF_UNIX;
+    strcpy(addr_un.sun_path, sockname);
     for(tries = 0; tries < 5; tries++) {
       if(connect(sock, (struct sockaddr *)&addr_un, sizeof(addr_un)) >= 0)
 	return sock;
diff --git a/utils/solvers/c/solver.c b/utils/solvers/c/solver.c
index dfa6a5aa7ae7a7ff00a79cad25854e544912463a..c53bbdc6a9570119617965ac9935f0c750d6064f 100644
--- a/utils/solvers/c/solver.c
+++ b/utils/solvers/c/solver.c
@@ -1,4 +1,4 @@
-/* $Id: solver.c,v 1.5 2006-02-25 14:36:53 geuzaine Exp $ */
+/* $Id: solver.c,v 1.6 2006-02-25 19:07:50 geuzaine Exp $ */
 /*
  * Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle
  *
@@ -47,6 +47,10 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#if !defined(WIN32) || defined(__CYGWIN__)
+#include <unistd.h>
+#endif
+
 #include "GmshClient.h"
 
 typedef enum { options, run } action;