summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkonrad.r <konrad.r>2005-05-16 16:15:53 +0000
committerkonrad.r <konrad.r>2005-05-16 16:15:53 +0000
commit7a9a919e5667770666f6786058e2bdd399ecaebe (patch)
treebe91c00beb54025a9c106c1ade37df3730e123f3
parentd17ae5f4f878c3346370590427213532446b9cc6 (diff)
downloadtog-pegasus-PEG25_IBM_5_16_05.zip
tog-pegasus-PEG25_IBM_5_16_05.tar.gz
tog-pegasus-PEG25_IBM_5_16_05.tar.xz
TITLE: Control Providers do not terminate properly. DESCRIPTION:
-rw-r--r--src/Pegasus/ControlProviders/ConfigSettingProvider/ConfigSettingProvider.h3
-rw-r--r--src/Pegasus/ControlProviders/InteropProvider/InteropProvider.h3
-rw-r--r--src/Pegasus/ControlProviders/NamespaceProvider/NamespaceProvider.h3
-rw-r--r--src/Pegasus/ControlProviders/ProviderRegistrationProvider/ProviderRegistrationProvider.cpp8
-rw-r--r--src/Pegasus/ControlProviders/UserAuthProvider/UserAuthProvider.h3
5 files changed, 15 insertions, 5 deletions
diff --git a/src/Pegasus/ControlProviders/ConfigSettingProvider/ConfigSettingProvider.h b/src/Pegasus/ControlProviders/ConfigSettingProvider/ConfigSettingProvider.h
index 659ccc0..b96d00d 100644
--- a/src/Pegasus/ControlProviders/ConfigSettingProvider/ConfigSettingProvider.h
+++ b/src/Pegasus/ControlProviders/ConfigSettingProvider/ConfigSettingProvider.h
@@ -210,6 +210,9 @@ public:
void terminate(void)
{
+ // delete self. this is necessary because the entry point for this object allocated it, and
+ // the module is responsible for its memory management.
+ delete this;
}
private:
diff --git a/src/Pegasus/ControlProviders/InteropProvider/InteropProvider.h b/src/Pegasus/ControlProviders/InteropProvider/InteropProvider.h
index 5abc56a..df4a165 100644
--- a/src/Pegasus/ControlProviders/InteropProvider/InteropProvider.h
+++ b/src/Pegasus/ControlProviders/InteropProvider/InteropProvider.h
@@ -198,6 +198,9 @@ public:
void terminate(void)
{
+ // delete self. this is necessary because the entry point for this object allocated it, and
+ // the module is responsible for its memory management.
+ delete this;
}
private:
diff --git a/src/Pegasus/ControlProviders/NamespaceProvider/NamespaceProvider.h b/src/Pegasus/ControlProviders/NamespaceProvider/NamespaceProvider.h
index 4402069..82c25b8 100644
--- a/src/Pegasus/ControlProviders/NamespaceProvider/NamespaceProvider.h
+++ b/src/Pegasus/ControlProviders/NamespaceProvider/NamespaceProvider.h
@@ -216,6 +216,9 @@ public:
void terminate(void)
{
+ // delete self. this is necessary because the entry point for this object allocated it, and
+ // the module is responsible for its memory management.
+ delete this;
}
private:
diff --git a/src/Pegasus/ControlProviders/ProviderRegistrationProvider/ProviderRegistrationProvider.cpp b/src/Pegasus/ControlProviders/ProviderRegistrationProvider/ProviderRegistrationProvider.cpp
index 0d3ad1f..916acd2 100644
--- a/src/Pegasus/ControlProviders/ProviderRegistrationProvider/ProviderRegistrationProvider.cpp
+++ b/src/Pegasus/ControlProviders/ProviderRegistrationProvider/ProviderRegistrationProvider.cpp
@@ -79,11 +79,6 @@ ProviderRegistrationProvider::ProviderRegistrationProvider(
ProviderRegistrationProvider::~ProviderRegistrationProvider(void)
{
- if (_providerRegistrationManager)
- {
- delete _providerRegistrationManager;
- }
-
if (_client_handle)
{
delete _client_handle;
@@ -99,6 +94,9 @@ void ProviderRegistrationProvider::initialize(CIMOMHandle & cimom)
void ProviderRegistrationProvider::terminate(void)
{
+ // delete self. this is necessary because the entry point for this object allocated it, and
+ // the module is responsible for its memory management.
+ delete this;
}
// get registered provider
diff --git a/src/Pegasus/ControlProviders/UserAuthProvider/UserAuthProvider.h b/src/Pegasus/ControlProviders/UserAuthProvider/UserAuthProvider.h
index 75b798d..c4ef552 100644
--- a/src/Pegasus/ControlProviders/UserAuthProvider/UserAuthProvider.h
+++ b/src/Pegasus/ControlProviders/UserAuthProvider/UserAuthProvider.h
@@ -226,7 +226,10 @@ public:
void terminate(void)
{
PEG_METHOD_ENTER(TRC_USER_MANAGER,"UserAuthProvider::terminate");
+ // delete self. this is necessary because the entry point for this object allocated it, and
+ // the module is responsible for its memory management.
+ delete this;
PEG_METHOD_EXIT();
}