summaryrefslogtreecommitdiff
path: root/TAO/tao/TAO_Internal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/TAO_Internal.cpp')
-rw-r--r--TAO/tao/TAO_Internal.cpp28
1 files changed, 22 insertions, 6 deletions
diff --git a/TAO/tao/TAO_Internal.cpp b/TAO/tao/TAO_Internal.cpp
index c617d27024e..a55ed696ab4 100644
--- a/TAO/tao/TAO_Internal.cpp
+++ b/TAO/tao/TAO_Internal.cpp
@@ -313,6 +313,17 @@ TAO::ORB::open_services (ACE_Service_Gestalt* pcfg,
return -1;
}
+ // If the target configuration happens to be the global context,
+ // add any 'private' arguments here.
+ if (pcfg == theone && svc_config_argv.length() > 1)
+ {
+ CORBA::ULong glen = global_svc_config_argv.length();
+ global_svc_config_argv.length(glen + svc_config_argv.length() - 1);
+ for (CORBA::ULong i = 1; i < svc_config_argv.length(); i++)
+ global_svc_config_argv[glen++] = svc_config_argv[i];
+ svc_config_argv.length(1);
+ }
+
int global_svc_config_argc = global_svc_config_argv.length ();
int status =
open_private_services_i (theone,
@@ -381,12 +392,17 @@ TAO::ORB::open_services (ACE_Service_Gestalt* pcfg,
return -1;
}
- int svc_config_argc = svc_config_argv.length ();
- int status =
- open_private_services_i (pcfg,
- svc_config_argc,
- svc_config_argv.get_buffer (),
- skip_service_config_open);
+ int status = 0;
+ // only open the private context if it is not also the global context
+ if (pcfg != ACE_Service_Config::global())
+ {
+ int svc_config_argc = svc_config_argv.length ();
+ status =
+ open_private_services_i (pcfg,
+ svc_config_argc,
+ svc_config_argv.get_buffer (),
+ skip_service_config_open);
+ }
if (status >= 0)
{