Skip to content
Snippets Groups Projects
Commit f18ecffd authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

coverity

parent 6cec5fcb
Branches
Tags
No related merge requests found
......@@ -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{
......
......@@ -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,
......
......@@ -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);
......
......@@ -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;
}
......
......@@ -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);
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment