diff --git a/src/App/Document.cpp b/src/App/Document.cpp index 02c742f86..c6cb3a047 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -2135,6 +2135,10 @@ void Document::_remObject(DocumentObject* pcObject) d->activeUndoTransaction->addObjectNew(pcObject); } } + else { + // for a rollback delete the object + signalTransactionRemove(*pcObject, 0); + } // remove from map d->objectMap.erase(pos); @@ -2145,6 +2149,11 @@ void Document::_remObject(DocumentObject* pcObject) break; } } + + // for a rollback delete the object + if (d->rollback) { + delete pcObject; + } } void Document::breakDependency(DocumentObject* pcObject, bool clear) diff --git a/src/Mod/Part/App/PartFeatures.cpp b/src/Mod/Part/App/PartFeatures.cpp index 89d87b3fe..d06122ac1 100644 --- a/src/Mod/Part/App/PartFeatures.cpp +++ b/src/Mod/Part/App/PartFeatures.cpp @@ -494,6 +494,10 @@ Offset::Offset() ADD_PROPERTY_TYPE(Fill,(false),"Offset",App::Prop_None,"Fill offset"); } +Offset::~Offset() +{ +} + short Offset::mustExecute() const { if (Source.isTouched()) diff --git a/src/Mod/Part/App/PartFeatures.h b/src/Mod/Part/App/PartFeatures.h index 4b397afd8..60de836f6 100644 --- a/src/Mod/Part/App/PartFeatures.h +++ b/src/Mod/Part/App/PartFeatures.h @@ -121,6 +121,7 @@ class Offset : public Part::Feature public: Offset(); + ~Offset(); App::PropertyLink Source; App::PropertyFloat Value; diff --git a/src/Mod/Test/Document.py b/src/Mod/Test/Document.py index aeccb84e8..a08e90659 100644 --- a/src/Mod/Test/Document.py +++ b/src/Mod/Test/Document.py @@ -56,6 +56,14 @@ class DocumentBasicCases(unittest.TestCase): self.Doc.undo() self.Doc.undo() + def testAbortTransaction(self): + self.Doc.openTransaction("Add") + obj=self.Doc.addObject("App::FeatureTest","Label") + self.Doc.abortTransaction() + TempPath = tempfile.gettempdir() + SaveName = TempPath + os.sep + "SaveRestoreTests.FCStd" + self.Doc.saveAs(SaveName) + def testRemoval(self): # Cannot write a real test case for that but when debugging the # C-code there shouldn't be a memory leak (see rev. 1814)