summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-01-26 01:02:54 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-01-26 01:02:54 +0000
commit2a4e2575845cc47c2fcbf59be579c0fadca6deca (patch)
treee8932bba3c6b11a3cdac64553f35d6e15fb5aaf8
parent69a121a736ba9a71e0d4a5460da34cd0f0b2ab11 (diff)
downloadATCD-2a4e2575845cc47c2fcbf59be579c0fadca6deca.tar.gz
ChangeLogTag:Tue Jan 25 19:01:33 2000 Carlos O'Ryan <coryan@cs.wustl.edu>
-rw-r--r--TAO/ChangeLogs/ChangeLog-02a194
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.cpp12
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.cpp11
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.cpp2
-rw-r--r--TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.cpp1
-rw-r--r--TAO/orbsvcs/tests/Event/Basic/MT_Disconnect.cpp2
-rw-r--r--TAO/orbsvcs/tests/Event/Basic/Negation.cpp3
-rw-r--r--TAO/orbsvcs/tests/Event/Basic/Observer.cpp21
-rwxr-xr-xTAO/orbsvcs/tests/Event/Basic/run_test.pl6
-rw-r--r--TAO/orbsvcs/tests/Event/lib/Driver.cpp21
10 files changed, 171 insertions, 102 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a
index a272249454e..a4d73e94402 100644
--- a/TAO/ChangeLogs/ChangeLog-02a
+++ b/TAO/ChangeLogs/ChangeLog-02a
@@ -1,133 +1,157 @@
+Tue Jan 25 19:01:33 2000 Carlos O'Ryan <coryan@cs.wustl.edu>
+
+ * orbsvcs/orbsvcs/Event/EC_Event_Channel.cpp:
+ Fixed shutdown problem for the Timer Module.
+
+ * orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.cpp:
+ Fixed memory leak, if the supplier disconnects while some
+ consumers are still attached it has to shutdown() its filter to
+ clear the extra reference counts.
+
+ * orbsvcs/tests/Event/Basic/Atomic_Reconnect.cpp:
+ * orbsvcs/tests/Event/Basic/MT_Disconnect.cpp:
+ * orbsvcs/tests/Event/Basic/Negation.cpp:
+ * orbsvcs/tests/Event/Basic/Observer.cpp:
+ * orbsvcs/tests/Event/lib/Driver.cpp:
+ Fixed several memory leaks in the tests, to verify that the
+ service is ok.
+
+ * orbsvcs/tests/Event/Basic/run_test.pl:
+ Increased allowed execution time for one of the tests.
+
+ * orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.cpp:
+ Cosmetic fixes
+
Tue Jan 25 18:51:42 2000 Jeff Parsons <parsons@cs.wustl.edu>
- * tests/IDL_Test/interface.idl:
- * tests/IDL_Test/generic_object.idl:
- Added tests for new forward declared interface rule
- mentioned below and for generic objects used as
- parameters in a request.
+ * tests/IDL_Test/interface.idl:
+ * tests/IDL_Test/generic_object.idl:
+ Added tests for new forward declared interface rule
+ mentioned below and for generic objects used as
+ parameters in a request.
Tue Jan 25 18:19:49 2000 Jeff Parsons <parsons@cs.wustl.edu>
- * TAO_IDL/tao_idl.cpp:
- * TAO_IDL/ast/ast_interface_fwd.cpp:
- * TAO_IDL/be/be_visitor_scope.cpp:
- * TAO_IDL/be/be_visitor_factory.cpp:
- * TAO_IDL/be/be_visitor_root/root.cpp:
- * TAO_IDL/be/be_visitor_interface_fwd/interface_fwd_ch.cpp:
- * TAO_IDL/be/be_visitor_interface_fwd.cpp:
- * TAO_IDL/be_include/be_visitor_interface_fwd.h:
- Modified files
-
- * TAO_IDL/be_include/be_visitor_interface_fwd/cdr_op_ch.h:
- * TAO_IDL/be/be_visitor_interface_fwd/cdr_op_ch.cpp:
- New files.
-
- Changes to support code generation and C++ compilation
- for IDL files containing a forward declared interface
- that is not defined in the same file. The spec had
- required that the definition be present, but the rule
- was recently relaxed in CORBA 2.3.1 (99-10-07). If
- the full definition is not in some generated .cpp file
- that is included in the build, the C++ compiler will
- produce a link error. This closes Bugzilla entry #401.
+ * TAO_IDL/tao_idl.cpp:
+ * TAO_IDL/ast/ast_interface_fwd.cpp:
+ * TAO_IDL/be/be_visitor_scope.cpp:
+ * TAO_IDL/be/be_visitor_factory.cpp:
+ * TAO_IDL/be/be_visitor_root/root.cpp:
+ * TAO_IDL/be/be_visitor_interface_fwd/interface_fwd_ch.cpp:
+ * TAO_IDL/be/be_visitor_interface_fwd.cpp:
+ * TAO_IDL/be_include/be_visitor_interface_fwd.h:
+ Modified files
+
+ * TAO_IDL/be_include/be_visitor_interface_fwd/cdr_op_ch.h:
+ * TAO_IDL/be/be_visitor_interface_fwd/cdr_op_ch.cpp:
+ New files.
+
+ Changes to support code generation and C++ compilation
+ for IDL files containing a forward declared interface
+ that is not defined in the same file. The spec had
+ required that the definition be present, but the rule
+ was recently relaxed in CORBA 2.3.1 (99-10-07). If
+ the full definition is not in some generated .cpp file
+ that is included in the build, the C++ compiler will
+ produce a link error. This closes Bugzilla entry #401.
Tue Jan 25 14:23:04 2000 Ossama Othman <ossama@uci.edu>
- * docs/pluggable_protocols/index.html:
+ * docs/pluggable_protocols/index.html:
- Updated/corrected some URLs.
+ Updated/corrected some URLs.
Tue Jan 25 14:05:42 2000 Irfan Pyarali <irfan@cs.wustl.edu>
- * tao/Leader_Follower.h (TAO_LF_Client_Thread_Helper and
- TAO_LF_Leader_Thread_Helper): Auto-pointer like classes that
- help manage the leader follower object.
- TAO_LF_Client_Thread_Helper helps with set_client_thread and
- reset_client_thread while TAO_LF_Leader_Thread_Helper helps with
- set_leader_thread and reset_leader_thread.
+ * tao/Leader_Follower.h (TAO_LF_Client_Thread_Helper and
+ TAO_LF_Leader_Thread_Helper): Auto-pointer like classes that
+ help manage the leader follower object.
+ TAO_LF_Client_Thread_Helper helps with set_client_thread and
+ reset_client_thread while TAO_LF_Leader_Thread_Helper helps with
+ set_leader_thread and reset_leader_thread.
- * tao/Wait_Strategy.cpp (TAO_Muxed_Wait_On_Leader_Follower::wait
- and TAO_Exclusive_Wait_On_Leader_Follower::wait):
+ * tao/Wait_Strategy.cpp (TAO_Muxed_Wait_On_Leader_Follower::wait
+ and TAO_Exclusive_Wait_On_Leader_Follower::wait):
- We now use guards to make sure that the leader follower object
- has consistent information even when errors occur. Previously,
- there were many return and exceptional conditions where the
- leader follower object was left in an inconsistent state.
+ We now use guards to make sure that the leader follower object
+ has consistent information even when errors occur. Previously,
+ there were many return and exceptional conditions where the
+ leader follower object was left in an inconsistent state.
Tue Jan 25 12:17:35 2000 Jeff Parsons <parsons@cs.wustl.edu>
- * TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp:
- Missed some cases in the previous checkin of this file.
+ * TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp:
+ Missed some cases in the previous checkin of this file.
Tue Jan 25 10:38:31 2000 Pradeep Gore <pradeep@flamenco.cs.wustl.edu>
- * orbsvcs/orbsvcs/Notify/Notify_SupplierAdmin_i.cpp:
- * orbsvcs/orbsvcs/Notify/Notify_ConsumerAdmin_i.cpp:
- Fixed "unreachable statement" warnings on kai.
+ * orbsvcs/orbsvcs/Notify/Notify_SupplierAdmin_i.cpp:
+ * orbsvcs/orbsvcs/Notify/Notify_ConsumerAdmin_i.cpp:
+ Fixed "unreachable statement" warnings on kai.
Tue Jan 25 02:07:58 2000 Nanbor Wang <nanbor@cs.wustl.edu>
- * examples/Simple/time/README: Added description on getting
- JACE.Misc.GetOpt.
+ * examples/Simple/time/README: Added description on getting
+ JACE.Misc.GetOpt.
- * examples/Simple/time/Time_Client.java: Modified the Java client
- so that it, like C++ client, can use command line args to
- determine ways of acquiring Time objref. This test now uses
- JACE.Misc.GetOpt (a complete JACE installation is not required.)
+ * examples/Simple/time/Time_Client.java: Modified the Java client
+ so that it, like C++ client, can use command line args to
+ determine ways of acquiring Time objref. This test now uses
+ JACE.Misc.GetOpt (a complete JACE installation is not required.)
Mon Jan 24 18:47:22 2000 Ossama Othman <ossama@uci.edu>
- * docs/Options.html:
+ * docs/Options.html:
- Clarified what UID and GID in the documentation for the
- -ORBSetUID and -ORBSetGID options.
+ Clarified what UID and GID in the documentation for the
+ -ORBSetUID and -ORBSetGID options.
Mon Jan 24 13:17:31 2000 Jeff Parsons <parsons@cs.wustl.edu>
- * TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp:
- Russell L. Carter <rcarter@pinyon.org> reported a bug when
- the return type of an operation is CORBA::Object. It turns
- out that CORBA::TypeCode, interface, forward declared interface,
- valuetype, and forward declared valuetype needed the same fix.
+ * TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp:
+ Russell L. Carter <rcarter@pinyon.org> reported a bug when
+ the return type of an operation is CORBA::Object. It turns
+ out that CORBA::TypeCode, interface, forward declared interface,
+ valuetype, and forward declared valuetype needed the same fix.
Sun Jan 23 18:15:32 2000 Krishnakumar Elakkara Pathayapura <krish@polka.cs.wustl.edu>
- * docs/releasenotes/index.html:
- Updated the release notes for the Logging Service
+ * docs/releasenotes/index.html:
+ Updated the release notes for the Logging Service
Sun Jan 23 14:09:30 2000 Ossama Othman <ossama@uci.edu>
- * docs/Options.html:
+ * docs/Options.html:
- Added descriptions of the newly added "-ORBSetUID" and
- "-ORBSetGID" ORB options.
+ Added descriptions of the newly added "-ORBSetUID" and
+ "-ORBSetGID" ORB options.
- * tao/ORB_Core.cpp (init):
+ * tao/ORB_Core.cpp (init):
- Added two new ORB options "-ORBSetUID" and "-ORBSetGID." These
- options can be used to the set the effective user and group IDs,
- respectively. This is useful when starting the ORB under the
- super-user but it is desired to run the ORB under different user
- and/or group IDs. A typical use would be to start a TAO daemon,
- under the 'nobody' user via System V style initialization
- scripts.
+ Added two new ORB options "-ORBSetUID" and "-ORBSetGID." These
+ options can be used to the set the effective user and group IDs,
+ respectively. This is useful when starting the ORB under the
+ super-user but it is desired to run the ORB under different user
+ and/or group IDs. A typical use would be to start a TAO daemon,
+ under the 'nobody' user via System V style initialization
+ scripts.
- Note that these options are only supported if the platform
- implements the setuid() and setgid() POSIX system calls.
+ Note that these options are only supported if the platform
+ implements the setuid() and setgid() POSIX system calls.
- In general, it is a good idea to only run the ORB with
- super-user privileges when necessary, e.g. when performing
- benchmarking experiments, and when access to the real-time
- scheduling class is needed. If the ORB must be started via the
- super-user account, and the real-time scheduling class won't be
- used, than the ORB's effective user ID should at least be
- changed to an unprivileged one, such as 'nobody'.
+ In general, it is a good idea to only run the ORB with
+ super-user privileges when necessary, e.g. when performing
+ benchmarking experiments, and when access to the real-time
+ scheduling class is needed. If the ORB must be started via the
+ super-user account, and the real-time scheduling class won't be
+ used, than the ORB's effective user ID should at least be
+ changed to an unprivileged one, such as 'nobody'.
Sat Jan 22 21:08:07 2000 Nanbor Wang <nanbor@cs.wustl.edu>
- * orbsvcs/orbsvcs/orbsvcs.dsp:
- * orbsvcs/orbsvcs/orbsvcs_static.dsp: Renamed
- EC_SupplierFiltering.* to EC_Supplier_Filter.*.
+ * orbsvcs/orbsvcs/orbsvcs.dsp:
+ * orbsvcs/orbsvcs/orbsvcs_static.dsp: Renamed
+ EC_SupplierFiltering.* to EC_Supplier_Filter.*.
Sat Jan 22 18:25:51 2000 Carlos O'Ryan <coryan@uci.edu>
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.cpp
index ebbddf71517..ed4a03a5b07 100644
--- a/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.cpp
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.cpp
@@ -74,16 +74,6 @@ TAO_EC_Event_Channel (const TAO_EC_Event_Channel_Attributes& attr,
TAO_EC_Event_Channel::~TAO_EC_Event_Channel (void)
{
- if (this->dispatching_ != 0)
- this->dispatching_->shutdown ();
- if (this->timeout_generator_ != 0)
- this->timeout_generator_->shutdown ();
-
- if (this->supplier_control_ != 0)
- this->supplier_control_->shutdown ();
- if (this->consumer_control_ != 0)
- this->consumer_control_->shutdown ();
-
this->factory_->destroy_dispatching (this->dispatching_);
this->dispatching_ = 0;
this->factory_->destroy_filter_builder (this->filter_builder_);
@@ -125,6 +115,8 @@ TAO_EC_Event_Channel::shutdown (CORBA::Environment& ACE_TRY_ENV)
{
this->dispatching_->shutdown ();
this->timeout_generator_->shutdown ();
+ this->supplier_control_->shutdown ();
+ this->consumer_control_->shutdown ();
PortableServer::POA_var consumer_poa =
this->consumer_admin_->_default_POA (ACE_TRY_ENV);
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.cpp
index be913f2ad31..3fbd578021f 100644
--- a/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.cpp
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.cpp
@@ -53,6 +53,17 @@ TAO_EC_Per_Supplier_Filter::unbind (TAO_EC_ProxyPushConsumer* consumer)
return;
this->consumer_ = 0;
+
+ ACE_TRY_NEW_ENV
+ {
+ this->shutdown (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ }
+ ACE_CATCHANY
+ {
+ // @@ Ignore exceptions
+ }
+ ACE_ENDTRY;
}
void
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.cpp
index 55e24686134..7aaf611aff4 100644
--- a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.cpp
+++ b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.cpp
@@ -47,7 +47,7 @@ TAO_EC_ProxyPushSupplier_Set::disconnected_i (
CORBA::Environment &)
{
if (this->all_suppliers_.remove (supplier) != 0)
- return;
+ return;// @@ rasise something?
supplier->_decr_refcnt ();
}
diff --git a/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.cpp b/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.cpp
index 29e4b11d232..66a18de1b3a 100644
--- a/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.cpp
+++ b/TAO/orbsvcs/tests/Event/Basic/Atomic_Reconnect.cpp
@@ -269,6 +269,7 @@ Task::svc ()
ACE_TRY_NEW_ENV
{
this->run (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
}
ACE_CATCHANY
{
diff --git a/TAO/orbsvcs/tests/Event/Basic/MT_Disconnect.cpp b/TAO/orbsvcs/tests/Event/Basic/MT_Disconnect.cpp
index 49fbbbc719c..23b2604ebce 100644
--- a/TAO/orbsvcs/tests/Event/Basic/MT_Disconnect.cpp
+++ b/TAO/orbsvcs/tests/Event/Basic/MT_Disconnect.cpp
@@ -98,7 +98,7 @@ run_test (PortableServer::POA_ptr poa,
Task task (event_channel.in (), use_callbacks);
- if (task.activate (THR_BOUND|THR_NEW_LWP, 10) != 0)
+ if (task.activate (THR_BOUND|THR_NEW_LWP, 1) != 0)
{
ACE_ERROR ((LM_ERROR, "Cannot activate the tasks\n"));
}
diff --git a/TAO/orbsvcs/tests/Event/Basic/Negation.cpp b/TAO/orbsvcs/tests/Event/Basic/Negation.cpp
index f6ad83a0035..0cad880b39a 100644
--- a/TAO/orbsvcs/tests/Event/Basic/Negation.cpp
+++ b/TAO/orbsvcs/tests/Event/Basic/Negation.cpp
@@ -172,6 +172,9 @@ main (int argc, char* argv[])
negation_consumer.dump_results (200, 5);
regular_consumer.dump_results (100, 5);
+
+ orb->destroy (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
}
ACE_CATCHANY
{
diff --git a/TAO/orbsvcs/tests/Event/Basic/Observer.cpp b/TAO/orbsvcs/tests/Event/Basic/Observer.cpp
index 413e0cd260f..036ea4bf3b5 100644
--- a/TAO/orbsvcs/tests/Event/Basic/Observer.cpp
+++ b/TAO/orbsvcs/tests/Event/Basic/Observer.cpp
@@ -120,10 +120,31 @@ EC_Master::run (int argc, char* argv[])
}
}
+ {
+ for (int i = 0; i != this->n_channels_; ++i)
+ {
+ this->channels_[i]->disconnect_clients (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ this->channels_[i]->shutdown_clients (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ this->channels_[i]->destroy_ec (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ this->channels_[i]->deactivate_ec (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+ this->channels_[i]->cleanup_tasks ();
+ this->channels_[i]->cleanup_suppliers ();
+ this->channels_[i]->cleanup_consumers ();
+ this->channels_[i]->cleanup_ec ();
+ }
+ }
+
this->root_poa_->destroy (1,
1,
ACE_TRY_ENV);
ACE_TRY_CHECK;
+
+ this->orb_->destroy (ACE_TRY_ENV);
+ ACE_TRY_CHECK;
}
ACE_CATCHANY
{
diff --git a/TAO/orbsvcs/tests/Event/Basic/run_test.pl b/TAO/orbsvcs/tests/Event/Basic/run_test.pl
index 11b67b021c6..1f05451f347 100755
--- a/TAO/orbsvcs/tests/Event/Basic/run_test.pl
+++ b/TAO/orbsvcs/tests/Event/Basic/run_test.pl
@@ -92,8 +92,8 @@ if ($T->TimedWait (60) == -1) {
print STDERR "\n\nMT Disconnects test\n";
$T = Process::Create ($prefix . "MT_Disconnect".$EXE_EXT,
- " -ORBSvcConf mt.svc.conf");
-if ($T->TimedWait (120) == -1) {
+ " -ORBSvcConf mt.svc.conf");
+if ($T->TimedWait (240) == -1) {
print STDERR "ERROR: Test timedout\n";
$status = 1;
$T->Kill (); $T->TimedWait (1);
@@ -101,7 +101,7 @@ if ($T->TimedWait (120) == -1) {
print STDERR "\n\nAtomic Reconnection test\n";
$T = Process::Create ($prefix . "Atomic_Reconnect".$EXE_EXT,
- " -ORBSvcConf mt.svc.conf");
+ " -ORBSvcConf mt.svc.conf");
if ($T->TimedWait (120) == -1) {
print STDERR "ERROR: Test timedout\n";
$status = 1;
diff --git a/TAO/orbsvcs/tests/Event/lib/Driver.cpp b/TAO/orbsvcs/tests/Event/lib/Driver.cpp
index 5f108cf65dc..10bf1d2a923 100644
--- a/TAO/orbsvcs/tests/Event/lib/Driver.cpp
+++ b/TAO/orbsvcs/tests/Event/lib/Driver.cpp
@@ -159,6 +159,14 @@ EC_Driver::run_cleanup (CORBA::Environment &ACE_TRY_ENV)
this->cleanup_suppliers ();
this->cleanup_consumers ();
this->cleanup_ec ();
+
+ this->root_poa_->destroy (0, 0, ACE_TRY_ENV);
+ ACE_CHECK;
+ this->root_poa_ = PortableServer::POA::_nil ();
+
+ this->orb_->destroy (ACE_TRY_ENV);
+ ACE_CHECK;
+ this->orb_ = CORBA::ORB::_nil ();
}
void
@@ -657,6 +665,9 @@ EC_Driver::execute_test (CORBA::Environment &ACE_TRY_ENV)
int
EC_Driver::allocate_tasks (void)
{
+ if (this->tasks_ != 0)
+ return 0;
+
ACE_NEW_RETURN (this->tasks_,
ACE_Task_Base*[this->n_suppliers_],
-1);
@@ -696,8 +707,6 @@ EC_Driver::activate_tasks (CORBA::Environment &)
for (int i = 0; i < this->n_suppliers_; ++i)
{
- this->tasks_[i] = this->allocate_task (i);
-
if (this->tasks_[i]->activate (this->thr_create_flags_,
1, 0, priority) == -1)
{
@@ -712,6 +721,8 @@ EC_Driver::activate_tasks (CORBA::Environment &)
void
EC_Driver::disconnect_suppliers (CORBA::Environment &ACE_TRY_ENV)
{
+ if (this->suppliers_ == 0)
+ return;
for (int i = 0; i < this->n_suppliers_; ++i)
{
this->suppliers_[i]->disconnect (ACE_TRY_ENV);
@@ -724,6 +735,8 @@ EC_Driver::disconnect_suppliers (CORBA::Environment &ACE_TRY_ENV)
void
EC_Driver::disconnect_consumers (CORBA::Environment &ACE_TRY_ENV)
{
+ if (this->consumers_ == 0)
+ return;
for (int i = 0; i < this->n_consumers_; ++i)
{
this->consumers_[i]->disconnect (ACE_TRY_ENV);
@@ -736,6 +749,8 @@ EC_Driver::disconnect_consumers (CORBA::Environment &ACE_TRY_ENV)
void
EC_Driver::shutdown_suppliers (CORBA::Environment &ACE_TRY_ENV)
{
+ if (this->suppliers_ == 0)
+ return;
for (int i = 0; i < this->n_suppliers_; ++i)
{
this->suppliers_[i]->shutdown (ACE_TRY_ENV);
@@ -748,6 +763,8 @@ EC_Driver::shutdown_suppliers (CORBA::Environment &ACE_TRY_ENV)
void
EC_Driver::shutdown_consumers (CORBA::Environment &ACE_TRY_ENV)
{
+ if (this->consumers_ == 0)
+ return;
for (int i = 0; i < this->n_consumers_; ++i)
{
this->consumers_[i]->shutdown (ACE_TRY_ENV);