summaryrefslogtreecommitdiff
path: root/Zend/zend.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-02-26 12:49:58 +0300
committerDmitry Stogov <dmitry@zend.com>2018-02-27 21:08:26 +0300
commitbaa9890112a863f10e62bbb4c5a1623642a5db3c (patch)
treeee93f9ad978ab285a124c91fef3bd4ce4900552d /Zend/zend.c
parentef255c9f0f2c2ad1ea224ed215edb00f5bc205bd (diff)
downloadphp-git-baa9890112a863f10e62bbb4c5a1623642a5db3c.tar.gz
Completely hide GC implementation details into zend_gc.c
Diffstat (limited to 'Zend/zend.c')
-rw-r--r--Zend/zend.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/Zend/zend.c b/Zend/zend.c
index efe51b7b47..a714f04786 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -101,16 +101,35 @@ static ZEND_INI_MH(OnUpdateErrorReporting) /* {{{ */
static ZEND_INI_MH(OnUpdateGCEnabled) /* {{{ */
{
- OnUpdateBool(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
-
- if (GC_G(gc_enabled)) {
- gc_init();
+ zend_bool val;
+
+ if (ZSTR_LEN(new_value) == 2 && strcasecmp("on", ZSTR_VAL(new_value)) == 0) {
+ val = 1;
+ } else if (ZSTR_LEN(new_value) == 3 && strcasecmp("yes", ZSTR_VAL(new_value)) == 0) {
+ val = 1;
+ }else if (ZSTR_LEN(new_value) == 4 && strcasecmp("true", ZSTR_VAL(new_value)) == 0) {
+ val = 1;
+ } else {
+ val = (zend_bool) atoi(ZSTR_VAL(new_value));
}
+ gc_set_enabled(val);
+
return SUCCESS;
}
/* }}} */
+static ZEND_INI_DISP(zend_gc_enabled_displayer_cb) /* {{{ */
+{
+ if (gc_enabled()) {
+ ZEND_PUTS("On");
+ } else {
+ ZEND_PUTS("Off");
+ }
+}
+/* }}} */
+
+
static ZEND_INI_MH(OnUpdateScriptEncoding) /* {{{ */
{
if (!CG(multibyte)) {
@@ -154,7 +173,7 @@ static ZEND_INI_MH(OnUpdateAssertions) /* {{{ */
ZEND_INI_BEGIN()
ZEND_INI_ENTRY("error_reporting", NULL, ZEND_INI_ALL, OnUpdateErrorReporting)
STD_ZEND_INI_ENTRY("zend.assertions", "1", ZEND_INI_ALL, OnUpdateAssertions, assertions, zend_executor_globals, executor_globals)
- STD_ZEND_INI_BOOLEAN("zend.enable_gc", "1", ZEND_INI_ALL, OnUpdateGCEnabled, gc_enabled, zend_gc_globals, gc_globals)
+ ZEND_INI_ENTRY3_EX("zend.enable_gc", "1", ZEND_INI_ALL, OnUpdateGCEnabled, NULL, NULL, NULL, zend_gc_enabled_displayer_cb)
STD_ZEND_INI_BOOLEAN("zend.multibyte", "0", ZEND_INI_PERDIR, OnUpdateBool, multibyte, zend_compiler_globals, compiler_globals)
ZEND_INI_ENTRY("zend.script_encoding", NULL, ZEND_INI_ALL, OnUpdateScriptEncoding)
STD_ZEND_INI_BOOLEAN("zend.detect_unicode", "1", ZEND_INI_ALL, OnUpdateBool, detect_unicode, zend_compiler_globals, compiler_globals)