From: Xinchen Hui <laruence@php.net>
Date: Sat, 21 Feb 2015 03:35:16 +0000 (+0800)
Subject: Cleanup globals initialization
X-Git-Tag: PRE_PHP7_EREG_MYSQL_REMOVALS~93
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4629f8978e86aa20e6254e7282e6c5a4fb26796c;p=php

Cleanup globals initialization

No needs explicit inititlize zero for globals in no-zts build.
executor_globals should be initialized in zend side.
---

diff --git a/Zend/zend.c b/Zend/zend.c
index 7609869a1a..b7a8784a69 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -466,22 +466,28 @@ static void compiler_globals_dtor(zend_compiler_globals *compiler_globals) /* {{
 static void executor_globals_ctor(zend_executor_globals *executor_globals) /* {{{ */
 {
 	ZEND_TSRMLS_CACHE_UPDATE();
+
 	zend_startup_constants();
 	zend_copy_constants(EG(zend_constants), GLOBAL_CONSTANTS_TABLE);
 	zend_init_rsrc_plist();
 	zend_init_exception_op();
-	EG(lambda_count) = 0;
-	ZVAL_UNDEF(&EG(user_error_handler));
-	ZVAL_UNDEF(&EG(user_exception_handler));
-	EG(in_autoload) = NULL;
-	EG(current_execute_data) = NULL;
-	EG(current_module) = NULL;
-	EG(exit_status) = 0;
+	executor_globals->lambda_count = 0;
+	ZVAL_UNDEF(&executor_globals->user_error_handler);
+	ZVAL_UNDEF(&executor_globals->user_exception_handler);
+	executor_globals->in_autoload = NULL;
+	executor_globals->current_execute_data = NULL;
+	executor_globals->current_module = NULL;
+	executor_globals->exit_status = 0;
 #if XPFPA_HAVE_CW
-	EG(saved_fpu_cw) = 0;
+	executor_globals->saved_fpu_cw = 0;
 #endif
-	EG(saved_fpu_cw_ptr) = NULL;
-	EG(active) = 0;
+	executor_globals->saved_fpu_cw_ptr = NULL;
+	executor_globals->active = 0;
+	executor_globals->bailout = NULL;
+	executor_globals->error_handling  = EH_NORMAL;
+	executor_globals->exception_class = NULL;
+	executor_globals->exception = NULL;
+	executor_globals->objects_store.object_buckets = NULL;
 }
 /* }}} */
 
@@ -662,9 +668,8 @@ int zend_startup(zend_utility_functions *utility_functions, char **extensions) /
 	ini_scanner_globals_ctor(&ini_scanner_globals);
 	php_scanner_globals_ctor(&language_scanner_globals);
 	zend_set_default_compile_time_values();
-	ZVAL_UNDEF(&EG(user_error_handler));
-	ZVAL_UNDEF(&EG(user_exception_handler));
 #endif
+	EG(error_reporting) = E_ALL & ~E_NOTICE;
 
 	zend_interned_strings_init();
 	zend_startup_builtin_functions();
diff --git a/ext/standard/browscap.c b/ext/standard/browscap.c
index 123a79ea12..11eeb7c907 100644
--- a/ext/standard/browscap.c
+++ b/ext/standard/browscap.c
@@ -311,8 +311,7 @@ PHP_MINIT_FUNCTION(browscap) /* {{{ */
 	char *browscap = INI_STR("browscap");
 
 #ifdef ZTS
-	ts_allocate_id(&browscap_globals_id, sizeof(browser_data),
-		(ts_allocate_ctor) browscap_globals_ctor, NULL);
+	ts_allocate_id(&browscap_globals_id, sizeof(browser_data), (ts_allocate_ctor) browscap_globals_ctor, NULL);
 #endif
 	/* ctor call not really needed for non-ZTS */
 
diff --git a/main/main.c b/main/main.c
index 944a61f86b..35fbcb731d 100644
--- a/main/main.c
+++ b/main/main.c
@@ -1919,8 +1919,6 @@ static size_t php_output_wrapper(const char *str, size_t str_length)
 static void core_globals_ctor(php_core_globals *core_globals)
 {
 	memset(core_globals, 0, sizeof(*core_globals));
-
-	php_startup_ticks();
 }
 /* }}} */
 #endif
@@ -2034,11 +2032,6 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod
 	int retval = SUCCESS, module_number=0;	/* for REGISTER_INI_ENTRIES() */
 	char *php_os;
 	zend_module_entry *module;
-#ifdef ZTS
-	zend_executor_globals *executor_globals;
-	void ***tsrm_ls;
-	php_core_globals *core_globals;
-#endif
 
 #if defined(PHP_WIN32) || (defined(NETWARE) && defined(USE_WINSOCK))
 	WORD wVersionRequested = MAKEWORD(2, 0);
@@ -2057,11 +2050,11 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod
 	_CrtSetReportMode(_CRT_ASSERT, 0);
 #endif
 #else
-	php_os=PHP_OS;
+	php_os = PHP_OS;
 #endif
 
 #ifdef ZTS
-	tsrm_ls = ts_resource(0);
+	(void)ts_resource(0);
 #endif
 
 #ifdef PHP_WIN32
@@ -2081,6 +2074,17 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod
 
 	php_output_startup();
 
+#ifdef ZTS
+	ts_allocate_id(&core_globals_id, sizeof(php_core_globals), (ts_allocate_ctor) core_globals_ctor, (ts_allocate_dtor) core_globals_dtor);
+	php_startup_ticks();
+#ifdef PHP_WIN32
+	ts_allocate_id(&php_win32_core_globals_id, sizeof(php_win32_core_globals), (ts_allocate_ctor) php_win32_core_globals_ctor, (ts_allocate_dtor) php_win32_core_globals_dtor);
+#endif
+#else
+	php_startup_ticks();
+#endif
+	gc_globals_ctor();
+
 	zuf.error_function = php_error_cb;
 	zuf.printf_function = php_printf;
 	zuf.write_function = php_output_wrapper;
@@ -2098,18 +2102,6 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod
 	zuf.resolve_path_function = php_resolve_path_for_zend;
 	zend_startup(&zuf, NULL);
 
-#ifdef ZTS
-	executor_globals = ts_resource(executor_globals_id);
-	ts_allocate_id(&core_globals_id, sizeof(php_core_globals), (ts_allocate_ctor) core_globals_ctor, (ts_allocate_dtor) core_globals_dtor);
-	core_globals = ts_resource(core_globals_id);
-#ifdef PHP_WIN32
-	ts_allocate_id(&php_win32_core_globals_id, sizeof(php_win32_core_globals), (ts_allocate_ctor) php_win32_core_globals_ctor, (ts_allocate_dtor) php_win32_core_globals_dtor);
-#endif
-#else
-	php_startup_ticks();
-#endif
-	gc_globals_ctor();
-
 #ifdef PHP_WIN32
 	{
 		OSVERSIONINFOEX *osvi = &EG(windows_version_info);
@@ -2122,24 +2114,6 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod
 		}
 	}
 #endif
-	EG(bailout) = NULL;
-	EG(error_reporting) = E_ALL & ~E_NOTICE;
-	PG(header_is_being_sent) = 0;
-	SG(request_info).headers_only = 0;
-	SG(request_info).argv0 = NULL;
-	SG(request_info).argc=0;
-	SG(request_info).argv=(char **)NULL;
-	PG(connection_status) = PHP_CONNECTION_NORMAL;
-	PG(during_request_startup) = 0;
-	PG(last_error_message) = NULL;
-	PG(last_error_file) = NULL;
-	PG(last_error_lineno) = 0;
-	EG(error_handling)  = EH_NORMAL;
-	EG(exception_class) = NULL;
-	PG(disable_functions) = NULL;
-	PG(disable_classes) = NULL;
-	EG(exception) = NULL;
-	EG(objects_store).object_buckets = NULL;
 
 #if HAVE_SETLOCALE
 	setlocale(LC_CTYPE, "");