diff --git a/Common/GmshSocket.h b/Common/GmshSocket.h
index 2ee9cd6d815c68ad79d33c25eea93ca104c2c07c..b20ea1b44ebe4a03b40d2836f0ef54e3e5fd958b 100644
--- a/Common/GmshSocket.h
+++ b/Common/GmshSocket.h
@@ -330,9 +330,9 @@ class GmshServer : public GmshSocket{
   virtual int NonBlockingWait(double waitint, double timeout, int socket=-1) = 0;
   // start the client by launching "exe args" (args is supposed to contain
   // '%s' where the socket name should appear)
-  int Start(const char *exe, const char *args, const char *sockname, double timeout)
+  int Start(const std::string &exe, const std::string &args, const std::string &sockname,
+            double timeout)
   {
-    if(!sockname) throw "Invalid (null) socket name";
     _sockname = sockname;
     int tmpsock;
     if(strstr(_sockname.c_str(), "/") || strstr(_sockname.c_str(), "\\") ||
@@ -395,9 +395,9 @@ class GmshServer : public GmshSocket{
       }
     }
 
-    if((exe && strlen(exe)) || (args && strlen(args))){
+    if(exe.size() || args.size()){
       char s[1024];
-      sprintf(s, args, _sockname.c_str());
+      sprintf(s, args.c_str(), _sockname.c_str());
       NonBlockingSystemCall(exe, s); // starts the solver
     }
     else{
diff --git a/Common/gmshLocalNetworkClient.cpp b/Common/gmshLocalNetworkClient.cpp
index 6e918c4451d88bf2502bd588f2dd5c1a44d92c5e..1bf5bd5d060e8cccaf9d27eb3a691b4d1de5d5b7 100644
--- a/Common/gmshLocalNetworkClient.cpp
+++ b/Common/gmshLocalNetworkClient.cpp
@@ -132,8 +132,7 @@ class onelabGmshServer : public GmshServer{
 
     int sock;
     try{
-      sock = Start(exe.c_str(), args.c_str(), sockname.c_str(),
-                   CTX::instance()->solver.timeout);
+      sock = Start(exe, args, sockname, CTX::instance()->solver.timeout);
     }
     catch(const char *err){
       Msg::Error("Abnormal server termination (%s on socket %s)", err,
diff --git a/Geo/GModelIO_MSH.cpp b/Geo/GModelIO_MSH.cpp
index 9b6ed85290395d99fa45d1ae64cbed7eef083cc1..832ce58c158ced2bb479df2cbdc0ce75021afd2e 100644
--- a/Geo/GModelIO_MSH.cpp
+++ b/Geo/GModelIO_MSH.cpp
@@ -180,7 +180,7 @@ int GModel::readMSH(const std::string &name)
 
     // $Nodes section
     else if(!strncmp(&str[1], "Nodes", 5)) {
-      if(!fgets(str, sizeof(str), fp)){  return 0; fclose(fp); }
+      if(!fgets(str, sizeof(str), fp)){ fclose(fp); return 0; }
       int numVertices;
       if(sscanf(str, "%d", &numVertices) != 1){ fclose(fp); return 0; }
       Msg::Info("%d vertices", numVertices);
diff --git a/Geo/SOrientedBoundingBox.cpp b/Geo/SOrientedBoundingBox.cpp
index 0a4af41e37ee66626f52cf43468b87d497aecebd..ee651f840f23b8e08cc2ab74fe0c9ac62ac36c43 100644
--- a/Geo/SOrientedBoundingBox.cpp
+++ b/Geo/SOrientedBoundingBox.cpp
@@ -42,32 +42,8 @@ SOrientedBoundingRectangle::~SOrientedBoundingRectangle()
   delete axisY;
 }
 
-SOrientedBoundingBox::SOrientedBoundingBox()
-{
-  center = SVector3();
-  size = SVector3();
-  axisX = SVector3();
-  axisY = SVector3();
-  axisZ = SVector3();
-}
-
-SOrientedBoundingBox::SOrientedBoundingBox(SVector3 &center_,
-                                           double sizeX,
-                                           double sizeY,
-                                           double sizeZ,
-                                           const SVector3 &axisX_,
-                                           const SVector3 &axisY_,
-                                           const SVector3 &axisZ_)
+void SOrientedBoundingBox::fillp()
 {
-  center = center_;
-  size = SVector3(sizeX, sizeY, sizeZ);
-  axisX = axisX_;
-  axisX.normalize();
-  axisY = axisY_;
-  axisY.normalize();
-  axisZ = axisZ_;
-  axisZ.normalize();
-
   double dx = 0.5 * size[0];
   double dy = 0.5 * size[1];
   double dz = 0.5 * size[2];
@@ -105,6 +81,35 @@ SOrientedBoundingBox::SOrientedBoundingBox(SVector3 &center_,
   p8z = center[2] + (axisX[2]*dx) + (axisY[2]*dy) + (axisZ[2]*dz);
 }
 
+SOrientedBoundingBox::SOrientedBoundingBox()
+{
+  center = SVector3();
+  size = SVector3();
+  axisX = SVector3();
+  axisY = SVector3();
+  axisZ = SVector3();
+  fillp();
+}
+
+SOrientedBoundingBox::SOrientedBoundingBox(SVector3 &center_,
+                                           double sizeX,
+                                           double sizeY,
+                                           double sizeZ,
+                                           const SVector3 &axisX_,
+                                           const SVector3 &axisY_,
+                                           const SVector3 &axisZ_)
+{
+  center = center_;
+  size = SVector3(sizeX, sizeY, sizeZ);
+  axisX = axisX_;
+  axisX.normalize();
+  axisY = axisY_;
+  axisY.normalize();
+  axisZ = axisZ_;
+  axisZ.normalize();
+  fillp();
+}
+
 SOrientedBoundingBox::SOrientedBoundingBox(SOrientedBoundingBox* other)
 {
   size = other->getSize();
@@ -112,43 +117,7 @@ SOrientedBoundingBox::SOrientedBoundingBox(SOrientedBoundingBox* other)
   axisY = other->getAxis(1);
   axisZ = other->getAxis(2);
   center = other->getCenter();
-
-  double dx = 0.5*size[0];
-  double dy = 0.5*size[1];
-  double dz = 0.5*size[2];
-
-  p1x = center[0] - (axisX[0]*dx) - (axisY[0]*dy) - (axisZ[0]*dz);
-  p1y = center[1] - (axisX[1]*dx) - (axisY[1]*dy) - (axisZ[1]*dz);
-  p1z = center[2] - (axisX[2]*dx) - (axisY[2]*dy) - (axisZ[2]*dz);
-
-  p2x = center[0] + (axisX[0]*dx) - (axisY[0]*dy) - (axisZ[0]*dz);
-  p2y = center[1] + (axisX[1]*dx) - (axisY[1]*dy) - (axisZ[1]*dz);
-  p2z = center[2] + (axisX[2]*dx) - (axisY[2]*dy) - (axisZ[2]*dz);
-
-  p3x = center[0] - (axisX[0]*dx) + (axisY[0]*dy) - (axisZ[0]*dz);
-  p3y = center[1] - (axisX[1]*dx) + (axisY[1]*dy) - (axisZ[1]*dz);
-  p3z = center[2] - (axisX[2]*dx) + (axisY[2]*dy) - (axisZ[2]*dz);
-
-  p4x = center[0] + (axisX[0]*dx) + (axisY[0]*dy) - (axisZ[0]*dz);
-  p4y = center[1] + (axisX[1]*dx) + (axisY[1]*dy) - (axisZ[1]*dz);
-  p4z = center[2] + (axisX[2]*dx) + (axisY[2]*dy) - (axisZ[2]*dz);
-
-  p5x = center[0] - (axisX[0]*dx) - (axisY[0]*dy) + (axisZ[0]*dz);
-  p5y = center[1] - (axisX[1]*dx) - (axisY[1]*dy) + (axisZ[1]*dz);
-  p5z = center[2] - (axisX[2]*dx) - (axisY[2]*dy) + (axisZ[2]*dz);
-
-  p6x = center[0] + (axisX[0]*dx) - (axisY[0]*dy) + (axisZ[0]*dz);
-  p6y = center[1] + (axisX[1]*dx) - (axisY[1]*dy) + (axisZ[1]*dz);
-  p6z = center[2] + (axisX[2]*dx) - (axisY[2]*dy) + (axisZ[2]*dz);
-
-  p7x = center[0] - (axisX[0]*dx) + (axisY[0]*dy) + (axisZ[0]*dz);
-  p7y = center[1] - (axisX[1]*dx) + (axisY[1]*dy) + (axisZ[1]*dz);
-  p7z = center[2] - (axisX[2]*dx) + (axisY[2]*dy) + (axisZ[2]*dz);
-
-  p8x = center[0] + (axisX[0]*dx) + (axisY[0]*dy) + (axisZ[0]*dz);
-  p8y = center[1] + (axisX[1]*dx) + (axisY[1]*dy) + (axisZ[1]*dz);
-  p8z = center[2] + (axisX[2]*dx) + (axisY[2]*dy) + (axisZ[2]*dz);
-
+  fillp();
 }
 
 double SOrientedBoundingBox::getMaxSize()
@@ -165,9 +134,9 @@ SVector3 SOrientedBoundingBox::getAxis(int axis)
 {
   SVector3 ret;
   switch (axis) {
-  case 0: ret=axisX; break;
-  case 1: ret=axisY; break;
-  case 2: ret=axisZ; break;
+  case 0: ret = axisX; break;
+  case 1: ret = axisY; break;
+  case 2: ret = axisZ; break;
   }
   return ret;
 }
diff --git a/Geo/SOrientedBoundingBox.h b/Geo/SOrientedBoundingBox.h
index 767dc57fa2b6926080077f8b2cf2ae11b7da034b..884b6905c89c302db7b35964f5eae12d99a4b16f 100644
--- a/Geo/SOrientedBoundingBox.h
+++ b/Geo/SOrientedBoundingBox.h
@@ -34,6 +34,7 @@ class SOrientedBoundingBox {
   SVector3 axisX;
   SVector3 axisY;
   SVector3 axisZ;
+  void fillp();
 
  public:
   double p1x, p1y, p1z;
@@ -50,8 +51,8 @@ class SOrientedBoundingBox {
   // axis system of the box. The axis form the local coordinates
   // system of the box. All these data are given in the local
   // coordinates system of the object.
-  SOrientedBoundingBox(SVector3& center, double sizeX, double sizeY, 
-                       double sizeZ, const SVector3 &axisX, 
+  SOrientedBoundingBox(SVector3& center, double sizeX, double sizeY,
+                       double sizeZ, const SVector3 &axisX,
                        const SVector3 &axisY, const SVector3 &axisZ);
 
   SOrientedBoundingBox(SOrientedBoundingBox* other);
@@ -68,11 +69,11 @@ class SOrientedBoundingBox {
 
   // valid values for axis are 0 (X-axis), 1 (Y-axis) or 2 (Z-axis)
   SVector3 getAxis(int axis);
-  
+
   static SOrientedBoundingBox* buildOBB(std::vector<SPoint3> vertices);
-  
+
   bool intersects(SOrientedBoundingBox &obb);
-  
+
   static double compare(SOrientedBoundingBox &obb1, SOrientedBoundingBox &obb2);
 };