From 0a2f6c876caa216e9ce9fdc662b8d70335d4738a Mon Sep 17 00:00:00 2001 From: Ken Martin Date: Tue, 17 Sep 2002 10:38:00 -0400 Subject: added destructor to loaded commands --- Source/cmCPluginAPI.h | 2 ++ Source/cmLoadCommandCommand.cxx | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Source/cmCPluginAPI.h b/Source/cmCPluginAPI.h index f1ef9ba..d7ba6d4 100644 --- a/Source/cmCPluginAPI.h +++ b/Source/cmCPluginAPI.h @@ -176,6 +176,7 @@ Finally we define the key data structures and function prototypes typedef int (*CM_INITIAL_PASS_FUNCTION)(void *info, void *mf, int argc, char *[]); typedef void (*CM_FINAL_PASS_FUNCTION)(void *info, void *mf); + typedef void (*CM_DESTRUCTOR_FUNCTION)(void *info); typedef struct { unsigned char magic1; @@ -184,6 +185,7 @@ Finally we define the key data structures and function prototypes int m_Inherited; CM_INITIAL_PASS_FUNCTION InitialPass; CM_FINAL_PASS_FUNCTION FinalPass; + CM_DESTRUCTOR_FUNCTION Destructor; CM_DOC_FUNCTION GetTerseDocumentation; CM_DOC_FUNCTION GetFullDocumentation; void *ClientData; diff --git a/Source/cmLoadCommandCommand.cxx b/Source/cmLoadCommandCommand.cxx index 3c098f5..7dec12c 100644 --- a/Source/cmLoadCommandCommand.cxx +++ b/Source/cmLoadCommandCommand.cxx @@ -28,6 +28,9 @@ public: this->info.CAPI = &cmStaticCAPI; } + ///! clean up any memory allocated by the plugin + ~cmLoadedCommand(); + /** * This is a virtual constructor for the command. */ @@ -139,7 +142,14 @@ void cmLoadedCommand::FinalPass() { this->info.FinalPass((void *)&this->info,(void *)this->m_Makefile); } - +} + +cmLoadedCommand::~cmLoadedCommand() +{ + if (this->info.Destructor) + { + this->info.Destructor((void *)&this->info); + } } // cmLoadCommandCommand -- cgit v0.12