fixes 0003771: Memory leak in Part.Face.Surface

This commit is contained in:
wmayer
2019-01-23 22:38:51 +01:00
parent 86d8372056
commit 2aee1e8368
5 changed files with 98 additions and 35 deletions

View File

@@ -177,7 +177,8 @@ PyObject* PyObjectBase::__getattro(PyObject * obj, PyObject *attro)
PyObject* value = pyObj->_getattr(attr);
#if 1
if (value && PyObject_TypeCheck(value, &(PyObjectBase::Type))) {
if (!static_cast<PyObjectBase*>(value)->isConst()) {
if (!static_cast<PyObjectBase*>(value)->isConst() &&
!static_cast<PyObjectBase*>(value)->isNotTracking()) {
static_cast<PyObjectBase*>(value)->setAttributeOf(attr, pyObj);
pyObj->trackAttribute(attr, value);
}

View File

@@ -201,7 +201,8 @@ class BaseExport PyObjectBase : public PyObject
enum Status {
Valid = 0,
Immutable = 1,
Notify = 2
Notify = 2,
NoTrack = 3
};
protected:
@@ -313,6 +314,14 @@ public:
void startNotify();
void setNotTracking(bool on=true) {
StatusBits.set(NoTrack, on);
}
bool isNotTracking() const {
return StatusBits.test(NoTrack);
}
typedef void* PointerType;
private: