Merge branch 'master' into adsk-contrib-fix-std-stream-overflow
This commit is contained in:
@@ -171,7 +171,8 @@ int B3DImporter::ReadByte(){
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
int B3DImporter::ReadInt(){
|
||||
if( _pos+4<=_buf.size() ){
|
||||
int n=*(int*)&_buf[_pos];
|
||||
int n;
|
||||
memcpy(&n, &_buf[_pos], 4);
|
||||
_pos+=4;
|
||||
return n;
|
||||
}
|
||||
@@ -182,7 +183,8 @@ int B3DImporter::ReadInt(){
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
float B3DImporter::ReadFloat(){
|
||||
if( _pos+4<=_buf.size() ){
|
||||
float n=*(float*)&_buf[_pos];
|
||||
float n;
|
||||
memcpy(&n, &_buf[_pos], 4);
|
||||
_pos+=4;
|
||||
return n;
|
||||
}
|
||||
|
||||
@@ -589,7 +589,10 @@ template <> inline void Structure :: Convert<short> (short& dest,const FileData
|
||||
{
|
||||
// automatic rescaling from short to float and vice versa (seems to be used by normals)
|
||||
if (name == "float") {
|
||||
dest = static_cast<short>(db.reader->GetF4() * 32767.f);
|
||||
float f = db.reader->GetF4();
|
||||
if ( f > 1.0f )
|
||||
f = 1.0f;
|
||||
dest = static_cast<short>( f * 32767.f);
|
||||
//db.reader->IncPtr(-4);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -151,7 +151,8 @@ uint32_t ReadWord(const char* input, const char*& cursor, const char* end)
|
||||
TokenizeError("cannot ReadWord, out of bounds",input, cursor);
|
||||
}
|
||||
|
||||
uint32_t word = *reinterpret_cast<const uint32_t*>(cursor);
|
||||
uint32_t word;
|
||||
memcpy(&word, cursor, 4);
|
||||
AI_SWAP4(word);
|
||||
|
||||
cursor += k_to_read;
|
||||
|
||||
@@ -272,7 +272,6 @@ bool IntersectsBoundaryProfile(const IfcVector3& e0, const IfcVector3& e1, const
|
||||
const IfcVector3& b0 = boundary[i];
|
||||
const IfcVector3& b1 = boundary[(i + 1) % bcount];
|
||||
IfcVector3 b = b1 - b0;
|
||||
IfcFloat b_sqlen_inv = 1.0 / b.SquareLength();
|
||||
|
||||
// segment-segment intersection
|
||||
// solve b0 + b*s = e0 + e*t for (s,t)
|
||||
@@ -281,6 +280,7 @@ bool IntersectsBoundaryProfile(const IfcVector3& e0, const IfcVector3& e1, const
|
||||
// no solutions (parallel lines)
|
||||
continue;
|
||||
}
|
||||
IfcFloat b_sqlen_inv = 1.0 / b.SquareLength();
|
||||
|
||||
const IfcFloat x = b0.x - e0.x;
|
||||
const IfcFloat y = b0.y - e0.y;
|
||||
|
||||
Reference in New Issue
Block a user