0001155: FreeCAD crashed while creating a loft of two ellipses

This commit is contained in:
wmayer 2013-06-20 13:12:31 +02:00
parent c6b02da648
commit 5b46a86056
4 changed files with 21 additions and 14 deletions

View File

@ -65,12 +65,6 @@ if(MSVC)
ADD_MSVC_PRECOMPILED_HEADER("PreCompiled.h" "PreCompiled.cpp" Drawing_CPP_SRCS)
endif(MSVC)
# Set special compiler flag to convert a SIGSEV into an exception
# to handle issue #0000478.
IF(MSVC)
SET_SOURCE_FILES_PROPERTIES(ProjectionAlgos.cpp PROPERTIES COMPILE_FLAGS "/EHa")
ENDIF(MSVC)
add_library(Drawing SHARED ${Drawing_SRCS} ${Features_SRCS} ${DrawingAlgos_SRCS})
target_link_libraries(Drawing ${Drawing_LIBS})
@ -94,6 +88,9 @@ if(MSVC)
set_target_properties(Drawing PROPERTIES DEBUG_OUTPUT_NAME "Drawing_d")
set_target_properties(Drawing PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Drawing)
set_target_properties(Drawing PROPERTIES PREFIX "../")
# Set special compiler flag to convert a SIGSEV into an exception
# to fix issue #0000478
set_target_properties(Drawing PROPERTIES COMPILE_FLAGS "/EHa")
elseif(MINGW)
set_target_properties(Drawing PROPERTIES SUFFIX ".pyd")
set_target_properties(Drawing PROPERTIES DEBUG_OUTPUT_NAME "Drawing_d")

View File

@ -25,6 +25,7 @@
#ifndef _PreComp_
# include <sstream>
# include <Standard_Failure.hxx>
#endif
@ -63,6 +64,19 @@ FeatureView::~FeatureView()
{
}
App::DocumentObjectExecReturn *FeatureView::recompute(void)
{
try {
return App::DocumentObject::recompute();
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
App::DocumentObjectExecReturn* ret = new App::DocumentObjectExecReturn(e->GetMessageString());
if (ret->Why.empty()) ret->Why = "Unknown OCC exception";
return ret;
}
}
App::DocumentObjectExecReturn *FeatureView::execute(void)
{
return App::DocumentObject::StdReturn;

View File

@ -55,6 +55,7 @@ public:
/** @name methods overide Feature */
//@{
/// recalculate the Feature
virtual App::DocumentObjectExecReturn *recompute(void);
virtual App::DocumentObjectExecReturn *execute(void);
//@}

View File

@ -127,14 +127,6 @@ SET(Features_SRCS
)
SOURCE_GROUP("Features" FILES ${Features_SRCS})
# Set special compiler flag to convert a SIGSEV into an exception
# to fix issue #0000215.
IF(MSVC)
SET_SOURCE_FILES_PROPERTIES(FeatureFillet.cpp PROPERTIES COMPILE_FLAGS "/EHa")
SET_SOURCE_FILES_PROPERTIES(FeaturePartBoolean.cpp PROPERTIES COMPILE_FLAGS "/EHa")
SET_SOURCE_FILES_PROPERTIES(FeatureExtrusion.cpp PROPERTIES COMPILE_FLAGS "/EHa")
ENDIF(MSVC)
SET(Properties_SRCS
PropertyTopoShape.cpp
PropertyTopoShape.h
@ -270,6 +262,9 @@ if(MSVC)
set_target_properties(Part PROPERTIES DEBUG_OUTPUT_NAME "Part_d")
set_target_properties(Part PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Mod/Part)
set_target_properties(Part PROPERTIES PREFIX "../")
# Set special compiler flag to convert a SIGSEV into an exception
# to fix issue #0000215, #0001155, ...
set_target_properties(Part PROPERTIES COMPILE_FLAGS "/EHa")
elseif(MINGW)
set_target_properties(Part PROPERTIES SUFFIX ".pyd")
set_target_properties(Part PROPERTIES DEBUG_OUTPUT_NAME "Part_d")