diff --git a/direct/src/ffi/FFIExternalObject.py b/direct/src/ffi/FFIExternalObject.py index 9208fe4ae9..8a218d274f 100644 --- a/direct/src/ffi/FFIExternalObject.py +++ b/direct/src/ffi/FFIExternalObject.py @@ -26,6 +26,9 @@ class FFIExternalObject: # Start with a null this pointer self.this = 0 + def destructor(self): + # Base destructor in case you do not define one + pass def getDowncastFunctions(self, thisClass, baseClass, chain): if (thisClass == baseClass): diff --git a/direct/src/ffi/FFITypes.py b/direct/src/ffi/FFITypes.py index 85c4b7aead..2009fd8e33 100644 --- a/direct/src/ffi/FFITypes.py +++ b/direct/src/ffi/FFITypes.py @@ -510,9 +510,8 @@ class ClassTypeDescriptor(BaseTypeDescriptor): self.outputBaseDestructor(file, nesting) if self.destructor: self.destructor.generateDestructorCode(self, file, nesting) - else: - self.outputEmptyDestructor(file, nesting) - + # If you have no destructor, inherit one + if len(self.staticMethods): indent(file, nesting+1, '\n') indent(file, nesting+1, '##################################################\n') @@ -765,7 +764,7 @@ class ClassTypeDescriptor(BaseTypeDescriptor): empty one instead """ indent(file, nesting+1, 'def destructor(self):\n') - indent(file, nesting+2, 'pass\n') + indent(file, nesting+2, "raise RuntimeError, 'No C++ destructor defined for class: ' + self.__class__.__name__\n") def generateReturnValueWrapper(self, file, userManagesMemory, needsDowncast, nesting):