summaryrefslogtreecommitdiff
path: root/php/src/IcePHP/Communicator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'php/src/IcePHP/Communicator.cpp')
-rw-r--r--php/src/IcePHP/Communicator.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/php/src/IcePHP/Communicator.cpp b/php/src/IcePHP/Communicator.cpp
index 42a43677acc..27f8b7a004b 100644
--- a/php/src/IcePHP/Communicator.cpp
+++ b/php/src/IcePHP/Communicator.cpp
@@ -767,11 +767,20 @@ createCommunicator(zval* zv, const ActiveCommunicatorPtr& ac TSRMLS_DC)
}
static CommunicatorInfoIPtr
-initializeCommunicator(zval* zv, Ice::StringSeq& args, const Ice::InitializationData& initData TSRMLS_DC)
+initializeCommunicator(zval* zv, Ice::StringSeq& args, bool hasArgs, const Ice::InitializationData& initData TSRMLS_DC)
{
try
{
- Ice::CommunicatorPtr c = Ice::initialize(args, initData);
+ Ice::CommunicatorPtr c;
+ if(hasArgs)
+ {
+ c = Ice::initialize(args, initData);
+ }
+ else
+ {
+ c = Ice::initialize(initData);
+ }
+
ActiveCommunicatorPtr ac = new ActiveCommunicator(c);
//
@@ -834,6 +843,7 @@ ZEND_FUNCTION(Ice_initialize)
// initialize(InitializationData)
// initialize()
//
+ bool hasArgs = false;
if(ZEND_NUM_ARGS())
{
if(Z_TYPE_PP(args[0]) == IS_ARRAY)
@@ -842,6 +852,7 @@ ZEND_FUNCTION(Ice_initialize)
{
RETURN_NULL();
}
+ hasArgs = true;
if(ZEND_NUM_ARGS() > 1)
{
if(Z_TYPE_PP(args[1]) != IS_OBJECT || Z_OBJCE_PP(args[1]) != initClass)
@@ -896,7 +907,7 @@ ZEND_FUNCTION(Ice_initialize)
}
}
- CommunicatorInfoIPtr info = initializeCommunicator(return_value, seq, initData TSRMLS_CC);
+ CommunicatorInfoIPtr info = initializeCommunicator(return_value, seq, hasArgs, initData TSRMLS_CC);
if(!info)
{
RETURN_NULL();