Skip to content
Open
8 changes: 8 additions & 0 deletions UPGRADING.INTERNALS
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,14 @@ PHP 8.6 INTERNALS UPGRADE NOTES
longer is a pointer, but a directly embedded HashTable struct.
. Added a C23_ENUM() helper macro to define forward-compatible fixed-size
enums.
. The INI_STR(), INI_INT(), INI_FLT(), and INI_BOOL() macros have been
removed. Instead new zend_ini_{bool|long|double|str|string}_literal()
macros have been added. This fixes an internal naming inconsistency as
"str" usually means zend_string*, and "string" means char*.
However INI_STR() returned a char*
. The INI_ORIG_{INT|STR|FLT|BOOL}() macros have been removed as they are
unused. If this behaviour is required fall back to the zend_ini_*
functions.

========================
2. Build system changes
Expand Down
6 changes: 3 additions & 3 deletions Zend/zend_fibers.c
Original file line number Diff line number Diff line change
Expand Up @@ -572,9 +572,9 @@ static ZEND_STACK_ALIGNED void zend_fiber_execute(zend_fiber_transfer *transfer)
zend_fiber *fiber = EG(active_fiber);

/* Determine the current error_reporting ini setting. */
zend_long error_reporting = INI_INT("error_reporting");
/* If error_reporting is 0 and not explicitly set to 0, INI_STR returns a null pointer. */
if (!error_reporting && !INI_STR("error_reporting")) {
zend_long error_reporting = zend_ini_long_literal("error_reporting");
/* If error_reporting is 0 and not explicitly set to 0, zend_ini_str returns a null pointer. */
if (!error_reporting && !zend_ini_str_literal("error_reporting")) {
error_reporting = E_ALL;
}

Expand Down
4 changes: 2 additions & 2 deletions Zend/zend_highlight.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini
{
zval token;
int token_type;
char *last_color = syntax_highlighter_ini->highlight_html;
char *next_color;
const char *last_color = syntax_highlighter_ini->highlight_html;
const char *next_color;

zend_printf("<pre><code style=\"color: %s\">", last_color);
/* highlight stuff coming back from zendlex() */
Expand Down
10 changes: 5 additions & 5 deletions Zend/zend_highlight.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@


typedef struct _zend_syntax_highlighter_ini {
char *highlight_html;
char *highlight_comment;
char *highlight_default;
char *highlight_string;
char *highlight_keyword;
const char *highlight_html;
const char *highlight_comment;
const char *highlight_default;
const char *highlight_string;
const char *highlight_keyword;
} zend_syntax_highlighter_ini;


Expand Down
4 changes: 2 additions & 2 deletions Zend/zend_ini.c
Original file line number Diff line number Diff line change
Expand Up @@ -491,15 +491,15 @@ ZEND_API double zend_ini_double(const char *name, size_t name_length, bool orig)
}
/* }}} */

ZEND_API char *zend_ini_string_ex(const char *name, size_t name_length, bool orig, bool *exists) /* {{{ */
ZEND_API const char *zend_ini_string_ex(const char *name, size_t name_length, bool orig, bool *exists) /* {{{ */
{
zend_string *str = zend_ini_str_ex(name, name_length, orig, exists);

return str ? ZSTR_VAL(str) : NULL;
}
/* }}} */

ZEND_API char *zend_ini_string(const char *name, size_t name_length, bool orig) /* {{{ */
ZEND_API const char *zend_ini_string(const char *name, size_t name_length, bool orig) /* {{{ */
{
zend_string *str = zend_ini_str(name, name_length, orig);

Expand Down
20 changes: 8 additions & 12 deletions Zend/zend_ini.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,19 @@ ZEND_API void display_ini_entries(zend_module_entry *module);

ZEND_API zend_long zend_ini_long(const char *name, size_t name_length, bool orig);
ZEND_API double zend_ini_double(const char *name, size_t name_length, bool orig);
ZEND_API char *zend_ini_string(const char *name, size_t name_length, bool orig);
ZEND_API char *zend_ini_string_ex(const char *name, size_t name_length, bool orig, bool *exists);
ZEND_API const char *zend_ini_string(const char *name, size_t name_length, bool orig);
ZEND_API const char *zend_ini_string_ex(const char *name, size_t name_length, bool orig, bool *exists);
ZEND_API zend_string *zend_ini_str(const char *name, size_t name_length, bool orig);
ZEND_API zend_string *zend_ini_str_ex(const char *name, size_t name_length, bool orig, bool *exists);
ZEND_API zend_string *zend_ini_get_value(zend_string *name);
ZEND_API bool zend_ini_parse_bool(const zend_string *str);

#define zend_ini_bool_literal(name) zend_ini_parse_bool(zend_ini_str((name), sizeof("" name) - 1, false))
#define zend_ini_long_literal(name) zend_ini_long((name), sizeof("" name) - 1, false)
#define zend_ini_double_literal(name) zend_ini_double((name), sizeof("" name) - 1, false)
#define zend_ini_str_literal(name) zend_ini_str((name), sizeof("" name) - 1, false)
#define zend_ini_string_literal(name) zend_ini_string((name), sizeof("" name) - 1, false)

/**
* Parses an ini quantity
*
Expand Down Expand Up @@ -191,16 +197,6 @@ END_EXTERN_C()
ZEND_INI_ENTRY3_EX(name, default_value, modifiable, on_modify, (void *) XtOffsetOf(struct_type, property_name), (void *) &struct_ptr, NULL, zend_ini_boolean_displayer_cb)
#endif

#define INI_INT(name) zend_ini_long((name), strlen(name), 0)
#define INI_FLT(name) zend_ini_double((name), strlen(name), 0)
#define INI_STR(name) zend_ini_string_ex((name), strlen(name), 0, NULL)
#define INI_BOOL(name) ((bool) INI_INT(name))

#define INI_ORIG_INT(name) zend_ini_long((name), strlen(name), 1)
#define INI_ORIG_FLT(name) zend_ini_double((name), strlen(name), 1)
#define INI_ORIG_STR(name) zend_ini_string((name), strlen(name), 1)
#define INI_ORIG_BOOL(name) ((bool) INI_ORIG_INT(name))

#define REGISTER_INI_ENTRIES() zend_register_ini_entries_ex(ini_entries, module_number, type)
#define UNREGISTER_INI_ENTRIES() zend_unregister_ini_entries_ex(module_number, type)
#define DISPLAY_INI_ENTRIES() display_ini_entries(zend_module)
Expand Down
4 changes: 2 additions & 2 deletions Zend/zend_multibyte.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ ZEND_API zend_result zend_multibyte_set_functions(const zend_multibyte_functions
* populated, we need to reinitialize script_encoding here.
*/
{
const char *value = zend_ini_string("zend.script_encoding", sizeof("zend.script_encoding") - 1, 0);
zend_multibyte_set_script_encoding_by_string(value, strlen(value));
const zend_string *value = zend_ini_str_literal("zend.script_encoding");
zend_multibyte_set_script_encoding_by_string(ZSTR_VAL(value), ZSTR_LEN(value));
}
return SUCCESS;
}
Expand Down
7 changes: 3 additions & 4 deletions ext/com_dotnet/com_dotnet.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@ static HRESULT dotnet_bind_runtime(LPVOID FAR *ppv)
typedef HRESULT (STDAPICALLTYPE *cbtr_t)(LPCWSTR pwszVersion, LPCWSTR pwszBuildFlavor, REFCLSID rclsid, REFIID riid, LPVOID FAR *ppv);
cbtr_t CorBindToRuntime;
OLECHAR *oleversion;
char *version;

mscoree = LoadLibraryA("mscoree.dll");
if (mscoree == NULL) {
Expand All @@ -140,11 +139,11 @@ static HRESULT dotnet_bind_runtime(LPVOID FAR *ppv)
return S_FALSE;
}

version = INI_STR("com.dotnet_version");
if (version == NULL || *version == '\0') {
const zend_string *version = zend_ini_str_literal("com.dotnet_version");
if (version == NULL || ZSTR_LEN(version) == 0) {
oleversion = NULL;
} else {
oleversion = php_com_string_to_olestring(version, strlen(version), COMG(code_page));
oleversion = php_com_string_to_olestring(ZSTR_VAL(version), ZSTR_LEN(version), COMG(code_page));
}

hr = CorBindToRuntime(oleversion, NULL, &CLSID_CorRuntimeHost, &IID_ICorRuntimeHost, ppv);
Expand Down
6 changes: 2 additions & 4 deletions ext/curl/interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -1100,8 +1100,6 @@ static void create_certinfo(struct curl_certinfo *ci, zval *listcode)
Set default options for a handle */
static void _php_curl_set_default_options(php_curl *ch)
{
char *cainfo;

curl_easy_setopt(ch->cp, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(ch->cp, CURLOPT_VERBOSE, 0L);
curl_easy_setopt(ch->cp, CURLOPT_ERRORBUFFER, ch->err.str);
Expand All @@ -1114,9 +1112,9 @@ static void _php_curl_set_default_options(php_curl *ch)
curl_easy_setopt(ch->cp, CURLOPT_DNS_CACHE_TIMEOUT, 120L);
curl_easy_setopt(ch->cp, CURLOPT_MAXREDIRS, 20L); /* prevent infinite redirects */

cainfo = INI_STR("openssl.cafile");
const char *cainfo = zend_ini_string_literal("openssl.cafile");
if (!(cainfo && cainfo[0] != '\0')) {
cainfo = INI_STR("curl.cainfo");
cainfo = zend_ini_string_literal("curl.cainfo");
}
if (cainfo && cainfo[0] != '\0') {
curl_easy_setopt(ch->cp, CURLOPT_CAINFO, cainfo);
Expand Down
8 changes: 4 additions & 4 deletions ext/date/php_date.c
Original file line number Diff line number Diff line change
Expand Up @@ -5480,18 +5480,18 @@ static void php_do_date_sunrise_sunset(INTERNAL_FUNCTION_PARAMETERS, bool calc_s
ZEND_PARSE_PARAMETERS_END();

if (latitude_is_null) {
latitude = INI_FLT("date.default_latitude");
latitude = zend_ini_double_literal("date.default_latitude");
}

if (longitude_is_null) {
longitude = INI_FLT("date.default_longitude");
longitude = zend_ini_double_literal("date.default_longitude");
}

if (zenith_is_null) {
if (calc_sunset) {
zenith = INI_FLT("date.sunset_zenith");
zenith = zend_ini_double_literal("date.sunset_zenith");
} else {
zenith = INI_FLT("date.sunrise_zenith");
zenith = zend_ini_double_literal("date.sunrise_zenith");
}
}

Expand Down
2 changes: 1 addition & 1 deletion ext/gd/gd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1599,7 +1599,7 @@ static void _php_image_create_from(INTERNAL_FUNCTION_PARAMETERS, int image_type,

#ifdef HAVE_GD_JPG
case PHP_GDIMG_TYPE_JPG:
ignore_warning = INI_INT("gd.jpeg_ignore_warning");
ignore_warning = zend_ini_bool_literal("gd.jpeg_ignore_warning");
im = gdImageCreateFromJpegEx(fp, ignore_warning);
break;
#endif
Expand Down
6 changes: 2 additions & 4 deletions ext/openssl/openssl_backend_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -504,10 +504,8 @@ void php_openssl_set_cert_locations(zval *return_value)
add_assoc_string(return_value, "default_cert_dir_env", (char *) X509_get_default_cert_dir_env());
add_assoc_string(return_value, "default_private_dir", (char *) X509_get_default_private_dir());
add_assoc_string(return_value, "default_default_cert_area", (char *) X509_get_default_cert_area());
add_assoc_string(return_value, "ini_cafile",
zend_ini_string("openssl.cafile", sizeof("openssl.cafile")-1, 0));
add_assoc_string(return_value, "ini_capath",
zend_ini_string("openssl.capath", sizeof("openssl.capath")-1, 0));
add_assoc_str(return_value, "ini_cafile", zend_string_copy(zend_ini_str_literal("openssl.cafile")));
add_assoc_str(return_value, "ini_capath", zend_string_copy(zend_ini_str_literal("openssl.capath")));
}

X509 *php_openssl_x509_from_str(
Expand Down
12 changes: 6 additions & 6 deletions ext/openssl/xp_ssl.c
Original file line number Diff line number Diff line change
Expand Up @@ -880,16 +880,16 @@ static long php_openssl_load_stream_cafile(X509_STORE *cert_store, const char *c
static zend_result php_openssl_enable_peer_verification(SSL_CTX *ctx, php_stream *stream) /* {{{ */
{
zval *val = NULL;
char *cafile = NULL;
char *capath = NULL;
const char *cafile = NULL;
const char *capath = NULL;
php_openssl_netstream_data_t *sslsock = (php_openssl_netstream_data_t*)stream->abstract;

GET_VER_OPT_STRING("cafile", cafile);
GET_VER_OPT_STRING("capath", capath);

if (cafile == NULL) {
cafile = zend_ini_string("openssl.cafile", sizeof("openssl.cafile")-1, 0);
cafile = strlen(cafile) ? cafile : NULL;
const zend_string *cafile_str = zend_ini_str_literal("openssl.cafile");
cafile = ZSTR_LEN(cafile_str) ? ZSTR_VAL(cafile_str) : NULL;
} else if (!sslsock->is_client) {
/* Servers need to load and assign CA names from the cafile */
STACK_OF(X509_NAME) *cert_names = SSL_load_client_CA_file(cafile);
Expand All @@ -902,8 +902,8 @@ static zend_result php_openssl_enable_peer_verification(SSL_CTX *ctx, php_stream
}

if (capath == NULL) {
capath = zend_ini_string("openssl.capath", sizeof("openssl.capath")-1, 0);
capath = strlen(capath) ? capath : NULL;
const zend_string *capath_str = zend_ini_str_literal("openssl.capath");
capath = ZSTR_LEN(capath_str) ? ZSTR_VAL(capath_str) : NULL;
}

if (cafile || capath) {
Expand Down
8 changes: 4 additions & 4 deletions ext/session/session.c
Original file line number Diff line number Diff line change
Expand Up @@ -1638,15 +1638,15 @@ PHPAPI zend_result php_session_start(void)
break;

case php_session_disabled: {
const char *value = zend_ini_string(ZEND_STRL("session.save_handler"), false);
const char *value = zend_ini_string_literal("session.save_handler");
if (!PS(mod) && value) {
PS(mod) = _php_find_ps_module(value);
if (!PS(mod)) {
php_error_docref(NULL, E_WARNING, "Cannot find session save handler \"%s\" - session startup failed", value);
return FAILURE;
}
}
value = zend_ini_string(ZEND_STRL("session.serialize_handler"), false);
value = zend_ini_string_literal("session.serialize_handler");
if (!PS(serializer) && value) {
PS(serializer) = _php_find_ps_serializer(value);
if (!PS(serializer)) {
Expand Down Expand Up @@ -2759,14 +2759,14 @@ static zend_result php_rinit_session(bool auto_start)

PS(mod) = NULL;
{
const char *value = zend_ini_string(ZEND_STRL("session.save_handler"), false);
const char *value = zend_ini_string_literal("session.save_handler");
if (value) {
PS(mod) = _php_find_ps_module(value);
}
}

if (PS(serializer) == NULL) {
const char *value = zend_ini_string(ZEND_STRL("session.serialize_handler"), false);
const char *value = zend_ini_string_literal("session.serialize_handler");
if (value) {
PS(serializer) = _php_find_ps_serializer(value);
}
Expand Down
4 changes: 2 additions & 2 deletions ext/soap/soap.c
Original file line number Diff line number Diff line change
Expand Up @@ -1665,7 +1665,7 @@ PHP_METHOD(SoapServer, handle)
sapi_add_header("Content-Type: text/xml; charset=utf-8", sizeof("Content-Type: text/xml; charset=utf-8")-1, 1);
}

if (INI_INT("zlib.output_compression")) {
if (zend_ini_long_literal("zlib.output_compression")) {
sapi_add_header("Connection: close", sizeof("Connection: close")-1, 1);
} else {
snprintf(cont_len, sizeof(cont_len), "Content-Length: %d", size);
Expand Down Expand Up @@ -1827,7 +1827,7 @@ static void soap_server_fault_ex(sdlFunctionPtr function, zval* fault, soapHeade
if (use_http_error_status) {
sapi_add_header("HTTP/1.1 500 Internal Server Error", sizeof("HTTP/1.1 500 Internal Server Error")-1, 1);
}
if (INI_INT("zlib.output_compression")) {
if (zend_ini_long_literal("zlib.output_compression")) {
sapi_add_header("Connection: close", sizeof("Connection: close")-1, 1);
} else {
snprintf(cont_len, sizeof(cont_len), "Content-Length: %d", size);
Expand Down
17 changes: 8 additions & 9 deletions ext/standard/basic_functions.c
Original file line number Diff line number Diff line change
Expand Up @@ -1717,11 +1717,11 @@ PHPAPI bool append_user_shutdown_function(php_shutdown_function_entry *shutdown_

ZEND_API void php_get_highlight_struct(zend_syntax_highlighter_ini *syntax_highlighter_ini) /* {{{ */
{
syntax_highlighter_ini->highlight_comment = INI_STR("highlight.comment");
syntax_highlighter_ini->highlight_default = INI_STR("highlight.default");
syntax_highlighter_ini->highlight_html = INI_STR("highlight.html");
syntax_highlighter_ini->highlight_keyword = INI_STR("highlight.keyword");
syntax_highlighter_ini->highlight_string = INI_STR("highlight.string");
syntax_highlighter_ini->highlight_comment = zend_ini_string_literal("highlight.comment");
syntax_highlighter_ini->highlight_default = zend_ini_string_literal("highlight.default");
syntax_highlighter_ini->highlight_html = zend_ini_string_literal("highlight.html");
syntax_highlighter_ini->highlight_keyword = zend_ini_string_literal("highlight.keyword");
syntax_highlighter_ini->highlight_string = zend_ini_string_literal("highlight.string");
}
/* }}} */

Expand Down Expand Up @@ -2029,17 +2029,16 @@ PHP_FUNCTION(ini_restore)
PHP_FUNCTION(set_include_path)
{
zend_string *new_value;
char *old_value;
zend_string *key;

ZEND_PARSE_PARAMETERS_START(1, 1)
Z_PARAM_PATH_STR(new_value)
ZEND_PARSE_PARAMETERS_END();

old_value = zend_ini_string("include_path", sizeof("include_path") - 1, 0);
zend_string *old_value = zend_ini_str_literal("include_path");
/* copy to return here, because alter might free it! */
if (old_value) {
RETVAL_STRING(old_value);
RETVAL_STR_COPY(old_value);
} else {
RETVAL_FALSE;
}
Expand All @@ -2059,7 +2058,7 @@ PHP_FUNCTION(get_include_path)
{
ZEND_PARSE_PARAMETERS_NONE();

zend_string *str = zend_ini_str("include_path", sizeof("include_path") - 1, 0);
zend_string *str = zend_ini_str_literal("include_path");

if (str == NULL) {
RETURN_FALSE;
Expand Down
6 changes: 3 additions & 3 deletions ext/standard/browscap.c
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ static void php_browscap_parser_cb(zval *arg1, zval *arg2, zval *arg3, int callb
) {
zend_error(E_CORE_ERROR, "Invalid browscap ini file: "
"'Parent' value cannot be same as the section name: %s "
"(in file %s)", ZSTR_VAL(ctx->current_section_name), INI_STR("browscap"));
"(in file %s)", ZSTR_VAL(ctx->current_section_name), zend_ini_string_literal("browscap"));
return;
}

Expand Down Expand Up @@ -399,7 +399,7 @@ static void php_browscap_parser_cb(zval *arg1, zval *arg2, zval *arg3, int callb
}
/* }}} */

static zend_result browscap_read_file(char *filename, browser_data *browdata, bool persistent) /* {{{ */
static zend_result browscap_read_file(const char *filename, browser_data *browdata, bool persistent) /* {{{ */
{
zend_file_handle fh;
browscap_parser_ctx ctx = {0};
Expand Down Expand Up @@ -499,7 +499,7 @@ PHP_INI_MH(OnChangeBrowscap)

PHP_MINIT_FUNCTION(browscap) /* {{{ */
{
char *browscap = INI_STR("browscap");
const char *browscap = zend_ini_string_literal("browscap");

#ifdef ZTS
ts_allocate_id(&browscap_globals_id, sizeof(browser_data), (ts_allocate_ctor) browscap_globals_ctor, NULL);
Expand Down
4 changes: 2 additions & 2 deletions ext/standard/dl.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,11 @@ PHPAPI int php_load_extension(const char *filename, int type, int start_now)
zend_module_entry *module_entry;
zend_module_entry *(*get_module)(void);
int error_type, slash_suffix = 0;
char *extension_dir;
const char *extension_dir;
char *err1, *err2;

if (type == MODULE_PERSISTENT) {
extension_dir = INI_STR("extension_dir");
extension_dir = zend_ini_string_literal("extension_dir");
} else {
extension_dir = PG(extension_dir);
}
Expand Down
Loading
Loading