diff --git a/spine-cpp/spine-cpp/include/spine/Extension.h b/spine-cpp/spine-cpp/include/spine/Extension.h index a64b0a61a..c417ef80f 100644 --- a/spine-cpp/spine-cpp/include/spine/Extension.h +++ b/spine-cpp/spine-cpp/include/spine/Extension.h @@ -61,6 +61,11 @@ public: getInstance()->_free((void *) ptr, file, line); } + template + static void beforeFree(T *ptr) { + getInstance()->_beforeFree((void *) ptr); + } + static char *readFile(const String &path, int *length) { return getInstance()->_readFile(path, length); } @@ -83,6 +88,8 @@ public: virtual char *_readFile(const String &path, int *length) = 0; + virtual void _beforeFree(void *ptr) { SP_UNUSED(ptr); } + protected: SpineExtension(); diff --git a/spine-cpp/spine-cpp/src/spine/SpineObject.cpp b/spine-cpp/spine-cpp/src/spine/SpineObject.cpp index 34308f432..f432f1abf 100644 --- a/spine-cpp/spine-cpp/src/spine/SpineObject.cpp +++ b/spine-cpp/spine-cpp/src/spine/SpineObject.cpp @@ -63,4 +63,5 @@ void SpineObject::operator delete(void *p) { } SpineObject::~SpineObject() { + SpineExtension::beforeFree(this); }