FreeCAD: master 22fa3b39
Author | Committer | Branch | Timestamp | Parent |
---|---|---|---|---|
Stefan Tröger | wmayer | master | 2016-09-21 06:25:51 | master 773c79d6 |
Changeset | Extension: Fix order-of-initialisation crash FreeCADs property system utilises some pointer math to calculate the offset between property and base class. Due to virtual inheritance of th ePropertyContainer the memory layout has been changed to rather random, which has lead to crashes dependend on the order of object initialisation. The solution is to not make PropertyContaner virtual but a class below, Base::Persitance. Then the memory layout is random for Persistance, but it is perfectly aligned for the base class chains from PropertyContainer onwards as well as from Extension onwards. Hence the proeprty system was changed to take the offset always from those two. |
|||
mod - src/App/DocumentObjectExtension.cpp | Diff File | |||
mod - src/App/DocumentObjectExtension.h | Diff File | |||
mod - src/App/DocumentObjectGroup.cpp | Diff File | |||
mod - src/App/DynamicProperty.cpp | Diff File | |||
mod - src/App/Extension.cpp | Diff File | |||
mod - src/App/Extension.h | Diff File | |||
mod - src/App/ExtensionContainer.cpp | Diff File | |||
mod - src/App/ExtensionContainer.h | Diff File | |||
mod - src/App/ExtensionContainerPyImp.cpp | Diff File | |||
mod - src/App/GeoFeatureGroupExtension.cpp | Diff File | |||
mod - src/App/GeoFeatureGroupExtension.h | Diff File | |||
mod - src/App/GroupExtension.cpp | Diff File | |||
mod - src/App/GroupExtension.h | Diff File | |||
mod - src/App/OriginGroupExtension.cpp | Diff File | |||
mod - src/App/OriginGroupExtension.h | Diff File | |||
mod - src/App/Part.cpp | Diff File | |||
mod - src/App/PropertyContainer.cpp | Diff File | |||
mod - src/App/PropertyContainer.h | Diff File | |||
mod - src/Base/Persistence.h | Diff File | |||
mod - src/Gui/ViewProviderDocumentObjectGroup.cpp | Diff File | |||
mod - src/Gui/ViewProviderExtension.cpp | Diff File | |||
mod - src/Gui/ViewProviderExtension.h | Diff File | |||
mod - src/Gui/ViewProviderGeoFeatureGroup.cpp | Diff File | |||
mod - src/Gui/ViewProviderGeoFeatureGroupExtension.cpp | Diff File | |||
mod - src/Gui/ViewProviderGeoFeatureGroupExtension.h | Diff File | |||
mod - src/Gui/ViewProviderGroupExtension.cpp | Diff File | |||
mod - src/Gui/ViewProviderGroupExtension.h | Diff File | |||
mod - src/Gui/ViewProviderOriginGroup.cpp | Diff File | |||
mod - src/Gui/ViewProviderOriginGroupExtension.cpp | Diff File | |||
mod - src/Gui/ViewProviderOriginGroupExtension.h | Diff File | |||
mod - src/Gui/ViewProviderPart.cpp | Diff File |