diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index b8a681695c..b4513c41e4 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -444,9 +444,11 @@ IF(MSVC) ENDFOREACH() ENDIF() ElSE() - add_definitions(-Wall -Wextra -Wno-maybe-uninitialized) + add_definitions(-Wall -Wextra) if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_definitions(-Wno-tautological-constant-out-of-range-compare) + else() + add_definitions(-Wno-maybe-uninitialized) endif() # -fPIC is not relevant on Windows and creates pointless warnings if (UNIX) diff --git a/src/ifcgeom/IfcGeomFunctions.cpp b/src/ifcgeom/IfcGeomFunctions.cpp index 156353f790..65d9c0f790 100644 --- a/src/ifcgeom/IfcGeomFunctions.cpp +++ b/src/ifcgeom/IfcGeomFunctions.cpp @@ -1968,8 +1968,11 @@ bool IfcGeom::Kernel::convert_layerset(const IfcSchema::IfcProduct* product, std if (true) { /**< @todo Why always true? */ if (axis_curve->DynamicType() == STANDARD_TYPE(Geom_Line)) { Handle_Geom_Line axis_line = Handle_Geom_Line::DownCast(axis_curve); + // @todo note that this creates an offset into the wrong order, the cross product arguments should be + // reversed. This causes some inversions later on, e.g. if(positive) { reverse(); } reference_surface = new Geom_Plane(axis_line->Lin().Location(), axis_line->Lin().Direction() ^ gp::DZ()); } else if (axis_curve->DynamicType() == STANDARD_TYPE(Geom_Circle)) { + // @todo note that in this branch this inversion does not seem to take place. Handle_Geom_Circle axis_line = Handle_Geom_Circle::DownCast(axis_curve); reference_surface = new Geom_CylindricalSurface(axis_line->Position(), axis_line->Radius()); } else { diff --git a/src/ifcparse/IfcFile.h b/src/ifcparse/IfcFile.h index f23bf9c7a0..a3120ec620 100644 --- a/src/ifcparse/IfcFile.h +++ b/src/ifcparse/IfcFile.h @@ -68,7 +68,9 @@ public: } bool operator!=(const type_iterator& other) const { - return entities_by_type_t::const_iterator::operator!=(other); + const entities_by_type_t::const_iterator& self_ = *this; + const entities_by_type_t::const_iterator& other_ = other; + return self_ != other_; } };