diff options
Diffstat (limited to 'main/main.c')
-rw-r--r-- | main/main.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/main/main.c b/main/main.c index 87a0f95802..be300e43d2 100644 --- a/main/main.c +++ b/main/main.c @@ -1073,7 +1073,7 @@ int php_request_startup(TSRMLS_D) int retval = SUCCESS; #ifdef PHP_WIN32 - CoInitialize(NULL); + PG(com_initialized) = 0; #endif #if PHP_SIGCHILD @@ -1325,12 +1325,28 @@ void php_request_shutdown(void *dummy) } zend_end_try(); #ifdef PHP_WIN32 - CoUninitialize(); + if (PG(com_initialized)) { + CoUninitialize(); + PG(com_initialized) = 0; + } #endif } /* }}} */ +/* {{{ php_com_initialize + */ +PHPAPI void php_com_initialize(TSRMLS_D) +{ +#ifdef PHP_WIN32 + if (!PG(com_initialized)) { + CoInitialize(NULL); + PG(com_initialized) = 1; + } +#endif +} +/* }}} */ + /* {{{ php_body_write_wrapper */ static int php_body_write_wrapper(const char *str, uint str_length) |