Skip to content

Commit 2c0d93b

Browse files
committed
zend_register_null_constant
fixed zend_register_bool_constant usage in macros use REGISTER_MAIN_* in zend_register_standard_constants
1 parent a49bb47 commit 2c0d93b

File tree

2 files changed

+23
-33
lines changed

2 files changed

+23
-33
lines changed

Zend/zend_constants.c

Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -119,38 +119,12 @@ void zend_register_standard_constants(TSRMLS_D)
119119
REGISTER_MAIN_LONG_CONSTANT("DEBUG_BACKTRACE_IGNORE_ARGS", DEBUG_BACKTRACE_IGNORE_ARGS, CONST_PERSISTENT | CONST_CS);
120120
/* true/false constants */
121121
{
122-
zend_constant c;
123-
124-
c.flags = CONST_PERSISTENT | CONST_CT_SUBST;
125-
c.module_number = 0;
126-
127-
c.name = zend_strndup(ZEND_STRL("TRUE"));
128-
c.name_len = sizeof("TRUE");
129-
ZVAL_BOOL(&c.value, 1);
130-
zend_register_constant(&c TSRMLS_CC);
131-
132-
c.name = zend_strndup(ZEND_STRL("FALSE"));
133-
c.name_len = sizeof("FALSE");
134-
ZVAL_BOOL(&c.value, 0);
135-
zend_register_constant(&c TSRMLS_CC);
136-
137-
c.name = zend_strndup(ZEND_STRL("NULL"));
138-
c.name_len = sizeof("NULL");
139-
ZVAL_NULL(&c.value);
140-
zend_register_constant(&c TSRMLS_CC);
141-
142-
c.flags = CONST_PERSISTENT | CONST_CS;
143-
144-
c.name = zend_strndup(ZEND_STRL("ZEND_THREAD_SAFE"));
145-
c.name_len = sizeof("ZEND_THREAD_SAFE");
146-
ZVAL_BOOL(&c.value, ZTS_V);
147-
zend_register_constant(&c TSRMLS_CC);
148-
149-
c.name = zend_strndup(ZEND_STRL("ZEND_DEBUG_BUILD"));
150-
c.name_len = sizeof("ZEND_DEBUG_BUILD");
151-
ZVAL_BOOL(&c.value, ZEND_DEBUG);
152-
zend_register_constant(&c TSRMLS_CC);
122+
REGISTER_MAIN_BOOL_CONSTANT("TRUE", 1, CONST_PERSISTENT | CONST_CT_SUBST);
123+
REGISTER_MAIN_BOOL_CONSTANT("FALSE", 0, CONST_PERSISTENT | CONST_CT_SUBST);
124+
REGISTER_MAIN_BOOL_CONSTANT("ZEND_THREAD_SAFE", ZTS_V, CONST_PERSISTENT | CONST_CS);
125+
REGISTER_MAIN_BOOL_CONSTANT("ZEND_DEBUG_BUILD", ZEND_DEBUG, CONST_PERSISTENT | CONST_CS);
153126
}
127+
REGISTER_MAIN_NULL_CONSTANT("NULL", CONST_PERSISTENT | CONST_CT_SUBST);
154128
}
155129

156130

@@ -171,6 +145,18 @@ void clean_non_persistent_constants(TSRMLS_D)
171145
}
172146
}
173147

148+
ZEND_API void zend_register_null_constant(const char *name, uint name_len, int flags, int module_number TSRMLS_DC)
149+
{
150+
zend_constant c;
151+
152+
ZVAL_NULL(&c.value);
153+
c.flags = flags;
154+
c.name = zend_strndup(name, name_len-1);
155+
c.name_len = name_len;
156+
c.module_number = module_number;
157+
zend_register_constant(&c TSRMLS_CC);
158+
}
159+
174160
ZEND_API void zend_register_bool_constant(const char *name, uint name_len, zend_bool bval, int flags, int module_number TSRMLS_DC)
175161
{
176162
zend_constant c;

Zend/zend_constants.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,22 @@ typedef struct _zend_constant {
3838
int module_number;
3939
} zend_constant;
4040

41+
#define REGISTER_NULL_CONSTANT(name, flags) zend_register_null_constant((name), sizeof(name), (flags), module_number TSRMLS_CC)
4142
#define REGISTER_BOOL_CONSTANT(name, bval, flags) zend_register_bool_constant((name), sizeof(name), (bval), (flags), module_number TSRMLS_CC)
4243
#define REGISTER_LONG_CONSTANT(name, lval, flags) zend_register_long_constant((name), sizeof(name), (lval), (flags), module_number TSRMLS_CC)
4344
#define REGISTER_DOUBLE_CONSTANT(name, dval, flags) zend_register_double_constant((name), sizeof(name), (dval), (flags), module_number TSRMLS_CC)
4445
#define REGISTER_STRING_CONSTANT(name, str, flags) zend_register_string_constant((name), sizeof(name), (str), (flags), module_number TSRMLS_CC)
4546
#define REGISTER_STRINGL_CONSTANT(name, str, len, flags) zend_register_stringl_constant((name), sizeof(name), (str), (len), (flags), module_number TSRMLS_CC)
4647

47-
#define REGISTER_NS_BOOL_CONSTANT(ns, name, bval, flags) zend_register_long_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (bval), (flags), module_number TSRMLS_CC)
48+
#define REGISTER_NS_NULL_CONSTANT(ns, name, flags) zend_register_null_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (flags), module_number TSRMLS_CC)
49+
#define REGISTER_NS_BOOL_CONSTANT(ns, name, bval, flags) zend_register_bool_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (bval), (flags), module_number TSRMLS_CC)
4850
#define REGISTER_NS_LONG_CONSTANT(ns, name, lval, flags) zend_register_long_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (lval), (flags), module_number TSRMLS_CC)
4951
#define REGISTER_NS_DOUBLE_CONSTANT(ns, name, dval, flags) zend_register_double_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (dval), (flags), module_number TSRMLS_CC)
5052
#define REGISTER_NS_STRING_CONSTANT(ns, name, str, flags) zend_register_string_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (str), (flags), module_number TSRMLS_CC)
5153
#define REGISTER_NS_STRINGL_CONSTANT(ns, name, str, len, flags) zend_register_stringl_constant(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name)), (str), (len), (flags), module_number TSRMLS_CC)
5254

53-
#define REGISTER_MAIN_BOOL_CONSTANT(name, bval, flags) zend_register_long_constant((name), sizeof(name), (bval), (flags), 0 TSRMLS_CC)
55+
#define REGISTER_MAIN_NULL_CONSTANT(name, flags) zend_register_null_constant((name), sizeof(name), (flags), 0 TSRMLS_CC)
56+
#define REGISTER_MAIN_BOOL_CONSTANT(name, bval, flags) zend_register_bool_constant((name), sizeof(name), (bval), (flags), 0 TSRMLS_CC)
5457
#define REGISTER_MAIN_LONG_CONSTANT(name, lval, flags) zend_register_long_constant((name), sizeof(name), (lval), (flags), 0 TSRMLS_CC)
5558
#define REGISTER_MAIN_DOUBLE_CONSTANT(name, dval, flags) zend_register_double_constant((name), sizeof(name), (dval), (flags), 0 TSRMLS_CC)
5659
#define REGISTER_MAIN_STRING_CONSTANT(name, str, flags) zend_register_string_constant((name), sizeof(name), (str), (flags), 0 TSRMLS_CC)
@@ -66,6 +69,7 @@ void clean_non_persistent_constants(TSRMLS_D);
6669
ZEND_API int zend_get_constant(const char *name, uint name_len, zval *result TSRMLS_DC);
6770
ZEND_API int zend_get_constant_ex(const char *name, uint name_len, zval *result, zend_class_entry *scope, ulong flags TSRMLS_DC);
6871
ZEND_API void zend_register_bool_constant(const char *name, uint name_len, zend_bool bval, int flags, int module_number TSRMLS_DC);
72+
ZEND_API void zend_register_null_constant(const char *name, uint name_len, int flags, int module_number TSRMLS_DC);
6973
ZEND_API void zend_register_long_constant(const char *name, uint name_len, long lval, int flags, int module_number TSRMLS_DC);
7074
ZEND_API void zend_register_double_constant(const char *name, uint name_len, double dval, int flags, int module_number TSRMLS_DC);
7175
ZEND_API void zend_register_string_constant(const char *name, uint name_len, char *strval, int flags, int module_number TSRMLS_DC);

0 commit comments

Comments
 (0)