summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2003-12-19 01:29:43 +0000
committerMichi Henning <michi@zeroc.com>2003-12-19 01:29:43 +0000
commite8f755c060a5777076559b180770716bf75a5bcc (patch)
treee87c40974bd48f0f6db885a6e6e2aeb2bee5b352 /cpp
parentminor fix (diff)
downloadice-e8f755c060a5777076559b180770716bf75a5bcc.tar.bz2
ice-e8f755c060a5777076559b180770716bf75a5bcc.tar.xz
ice-e8f755c060a5777076559b180770716bf75a5bcc.zip
Fixed crash caused by two calls to destroy() if Ice::Application was used
and the process was interrupted.
Diffstat (limited to 'cpp')
-rw-r--r--cpp/CHANGES4
-rw-r--r--cpp/src/Ice/CommunicatorI.cpp5
2 files changed, 8 insertions, 1 deletions
diff --git a/cpp/CHANGES b/cpp/CHANGES
index 8f664a807a6..74955bac17f 100644
--- a/cpp/CHANGES
+++ b/cpp/CHANGES
@@ -1,6 +1,10 @@
Changes since version 1.2.0
---------------------------
+- Fixed a bug that could cause a crash if an application used
+ Ice::Application and was interrupted by a signal, resulting
+ in two calls to Communicator::destroy().
+
- Replaced interface Glacier::PasswordVerifier with
Glacier::PermissionsVerifier, property
Glacier.Starter.PasswordVerifier with
diff --git a/cpp/src/Ice/CommunicatorI.cpp b/cpp/src/Ice/CommunicatorI.cpp
index f4fc8d20d3c..3ea9e32dd1c 100644
--- a/cpp/src/Ice/CommunicatorI.cpp
+++ b/cpp/src/Ice/CommunicatorI.cpp
@@ -100,7 +100,10 @@ Ice::CommunicatorI::destroy()
{
theCollector->stop();
}
- theCollector->collectGarbage(); // Collect whenever a communicator is destroyed.
+ if(theCollector)
+ {
+ theCollector->collectGarbage(); // Collect whenever a communicator is destroyed.
+ }
if(last)
{
if(gcTraceLevel)