Commit c290dfdb0db for php.net
commit c290dfdb0dbc71845028ffdd4dfadac67d036e0f
Author: Gina Peter Banyard <girgias@php.net>
Date: Tue Jul 28 13:44:00 2026 +0100
streams: various small refactoring for stream error API (#22847)
- Use const when possible
- Use bool or size_t type rather than int type
diff --git a/main/streams/php_stream_errors.h b/main/streams/php_stream_errors.h
index 878350f972a..da7a4cc84e9 100644
--- a/main/streams/php_stream_errors.h
+++ b/main/streams/php_stream_errors.h
@@ -93,8 +93,8 @@ typedef struct {
/* Error operation management */
PHPAPI php_stream_error_operation *php_stream_error_operation_begin(void);
-PHPAPI void php_stream_error_operation_end(php_stream_context *context);
-PHPAPI void php_stream_error_operation_end_for_stream(php_stream *stream);
+PHPAPI void php_stream_error_operation_end(const php_stream_context *context);
+PHPAPI void php_stream_error_operation_end_for_stream(const php_stream *stream);
PHPAPI void php_stream_error_operation_abort(void);
/* State cleanup function */
@@ -108,35 +108,36 @@ PHPAPI void php_stream_error_clear_stored(void);
/* Wrapper error reporting functions */
PHPAPI void php_stream_wrapper_error_with_name(const char *wrapper_name,
- php_stream_context *context, const char *docref, int options, int severity,
+ const php_stream_context *context, const char *docref, int options, int severity,
bool terminating, zend_enum_StreamErrorCode code, const char *fmt, ...)
ZEND_ATTRIBUTE_FORMAT(printf, 8, 9);
-PHPAPI void php_stream_wrapper_error(php_stream_wrapper *wrapper, php_stream_context *context,
+PHPAPI void php_stream_wrapper_error(
+ const php_stream_wrapper *wrapper, const php_stream_context *context,
const char *docref, int options, int severity, bool terminating,
zend_enum_StreamErrorCode code, const char *fmt, ...)
ZEND_ATTRIBUTE_FORMAT(printf, 8, 9);
-PHPAPI void php_stream_error(php_stream *stream, const char *docref, int severity,
+PHPAPI void php_stream_error(const php_stream *stream, const char *docref, int severity,
bool terminating, zend_enum_StreamErrorCode code, const char *fmt, ...)
ZEND_ATTRIBUTE_FORMAT(printf, 6, 7);
/* Legacy wrapper error log functions */
PHPAPI void php_stream_wrapper_log_error(const php_stream_wrapper *wrapper,
- php_stream_context *context, int options, int severity, bool terminating,
+ const php_stream_context *context, int options, int severity, bool terminating,
zend_enum_StreamErrorCode code, const char *fmt, ...)
ZEND_ATTRIBUTE_FORMAT(printf, 7, 8);
PHPAPI void php_stream_display_wrapper_name_errors(const char *wrapper_name,
- php_stream_context *context, zend_enum_StreamErrorCode code,
+ const php_stream_context *context, zend_enum_StreamErrorCode code,
const char *caption);
-PHPAPI void php_stream_display_wrapper_errors(php_stream_wrapper *wrapper,
- php_stream_context *context, zend_enum_StreamErrorCode code,
+PHPAPI void php_stream_display_wrapper_errors(const php_stream_wrapper *wrapper,
+ const php_stream_context *context, zend_enum_StreamErrorCode code,
const char *caption);
PHPAPI void php_stream_tidy_wrapper_name_error_log(const char *wrapper_name);
-PHPAPI void php_stream_tidy_wrapper_error_log(php_stream_wrapper *wrapper);
+PHPAPI void php_stream_tidy_wrapper_error_log(const php_stream_wrapper *wrapper);
/* Convenience macros - code argument is the bare case name (e.g. RenameFailed) */
#define php_stream_wrapper_warn(wrapper, context, options, code, ...) \
diff --git a/main/streams/stream_errors.c b/main/streams/stream_errors.c
index 40056f0856e..4e59e275cf9 100644
--- a/main/streams/stream_errors.c
+++ b/main/streams/stream_errors.c
@@ -33,7 +33,7 @@ static zend_class_entry *php_ce_stream_exception;
static void php_stream_error_entry_free(php_stream_error_entry *entry);
/* Helper to create a single StreamError object from an entry */
-static void php_stream_error_create_object(zval *zv, php_stream_error_entry *entry)
+static void php_stream_error_create_object(zval *zv, const php_stream_error_entry *entry)
{
object_init_ex(zv, php_ce_stream_error);
@@ -69,11 +69,11 @@ static void php_stream_error_create_object(zval *zv, php_stream_error_entry *ent
}
/* Create array of StreamError objects from error chain */
-static void php_stream_error_create_array(zval *zv, php_stream_error_entry *first)
+static void php_stream_error_create_array(zval *zv, const php_stream_error_entry *first)
{
array_init(zv);
- php_stream_error_entry *entry = first;
+ const php_stream_error_entry *entry = first;
while (entry) {
zval error_obj;
php_stream_error_create_object(&error_obj, entry);
@@ -113,7 +113,7 @@ static php_stream_error_store php_stream_auto_decide_error_store_mode(php_stream
}
}
-static php_stream_error_mode php_stream_get_error_mode(php_stream_context *context)
+static php_stream_error_mode php_stream_get_error_mode(const php_stream_context *context)
{
if (!context) {
return PHP_STREAM_ERROR_MODE_ERROR;
@@ -143,7 +143,7 @@ static php_stream_error_mode php_stream_get_error_mode(php_stream_context *conte
}
static php_stream_error_store php_stream_get_error_store_mode(
- php_stream_context *context, php_stream_error_mode error_mode)
+ const php_stream_context *context, php_stream_error_mode error_mode)
{
if (!context) {
return php_stream_auto_decide_error_store_mode(error_mode);
@@ -178,9 +178,9 @@ static php_stream_error_store php_stream_get_error_store_mode(
/* Helper functions */
-static bool php_stream_has_terminating_error(php_stream_error_operation *op)
+static bool php_stream_has_terminating_error(const php_stream_error_operation *op)
{
- php_stream_error_entry *entry = op->first_error;
+ const php_stream_error_entry *entry = op->first_error;
while (entry) {
if (entry->terminating) {
return true;
@@ -205,7 +205,7 @@ static inline php_stream_error_operation *php_stream_get_operation_at_depth(uint
static inline php_stream_error_operation *php_stream_get_parent_operation(void)
{
- php_stream_error_state *state = &FG(stream_error_state);
+ const php_stream_error_state *state = &FG(stream_error_state);
if (state->operation_depth <= 1) {
return NULL;
@@ -265,7 +265,7 @@ PHPAPI void php_stream_error_state_cleanup(void)
PHPAPI void php_stream_error_get_last(zval *return_value)
{
- php_stream_error_state *state = &FG(stream_error_state);
+ const php_stream_error_state *state = &FG(stream_error_state);
if (!state->stored_errors) {
ZVAL_EMPTY_ARRAY(return_value);
@@ -359,7 +359,7 @@ static void php_stream_error_add(zend_enum_StreamErrorCode code, const char *wra
/* Error reporting */
-static void php_stream_call_error_handler(zval *handler, zval *errors_array)
+static void php_stream_call_error_handler(const zval *handler, zval *errors_array)
{
zend_fcall_info_cache fcc;
char *is_callable_error = NULL;
@@ -375,7 +375,7 @@ static void php_stream_call_error_handler(zval *handler, zval *errors_array)
zend_call_known_fcc(&fcc, NULL, 1, errors_array, NULL);
}
-static void php_stream_throw_exception_with_errors(php_stream_error_operation *op)
+static void php_stream_throw_exception_with_errors(const php_stream_error_operation *op)
{
if (!op->first_error) {
return;
@@ -401,7 +401,7 @@ static void php_stream_throw_exception_with_errors(php_stream_error_operation *o
zend_throw_exception_object(&ex);
}
-static void php_stream_report_errors(php_stream_context *context, php_stream_error_operation *op,
+static void php_stream_report_errors(const php_stream_context *context, const php_stream_error_operation *op,
php_stream_error_mode error_mode, bool is_terminating)
{
switch (error_mode) {
@@ -426,7 +426,7 @@ static void php_stream_report_errors(php_stream_context *context, php_stream_err
}
/* Call user error handler if set */
- zval *handler
+ const zval *handler
= context ? php_stream_context_get_option(context, "stream", "error_handler") : NULL;
if (handler) {
@@ -441,7 +441,7 @@ static void php_stream_report_errors(php_stream_context *context, php_stream_err
/* Error storage */
-PHPAPI void php_stream_error_operation_end(php_stream_context *context)
+PHPAPI void php_stream_error_operation_end(const php_stream_context *context)
{
php_stream_error_state *state = &FG(stream_error_state);
php_stream_error_operation *op = state->current_operation;
@@ -533,7 +533,7 @@ PHPAPI void php_stream_error_operation_end(php_stream_context *context)
op->error_count = 0;
}
-PHPAPI void php_stream_error_operation_end_for_stream(php_stream *stream)
+PHPAPI void php_stream_error_operation_end_for_stream(const php_stream *stream)
{
php_stream_error_state *state = &FG(stream_error_state);
php_stream_error_operation *op = state->current_operation;
@@ -551,7 +551,7 @@ PHPAPI void php_stream_error_operation_end_for_stream(php_stream *stream)
return;
}
- php_stream_context *context = PHP_STREAM_CONTEXT(stream);
+ const php_stream_context *context = PHP_STREAM_CONTEXT(stream);
php_stream_error_operation_end(context);
}
@@ -575,7 +575,7 @@ PHPAPI void php_stream_error_operation_abort(void)
/* Wrapper error reporting */
-static void php_stream_wrapper_error_internal(const char *wrapper_name, php_stream_context *context,
+static void php_stream_wrapper_error_internal(const char *wrapper_name, const php_stream_context *context,
const char *docref, int severity, bool terminating,
zend_enum_StreamErrorCode code, zend_string *message)
{
@@ -592,7 +592,7 @@ static void php_stream_wrapper_error_internal(const char *wrapper_name, php_stre
}
PHPAPI void php_stream_wrapper_error_with_name(const char *wrapper_name,
- php_stream_context *context, const char *docref, int options, int severity,
+ const php_stream_context *context, const char *docref, int options, int severity,
bool terminating, zend_enum_StreamErrorCode code, const char *fmt, ...)
{
if (!(options & REPORT_ERRORS)) {
@@ -608,7 +608,9 @@ PHPAPI void php_stream_wrapper_error_with_name(const char *wrapper_name,
wrapper_name, context, docref, severity, terminating, code, message);
}
-PHPAPI void php_stream_wrapper_error(php_stream_wrapper *wrapper, php_stream_context *context,
+PHPAPI void php_stream_wrapper_error(
+ const php_stream_wrapper *wrapper,
+ const php_stream_context *context,
const char *docref, int options, int severity, bool terminating,
zend_enum_StreamErrorCode code, const char *fmt, ...)
{
@@ -629,7 +631,7 @@ PHPAPI void php_stream_wrapper_error(php_stream_wrapper *wrapper, php_stream_con
/* Stream error reporting */
-PHPAPI void php_stream_error(php_stream *stream, const char *docref, int severity,
+PHPAPI void php_stream_error(const php_stream *stream, const char *docref, int severity,
bool terminating, zend_enum_StreamErrorCode code, const char *fmt, ...)
{
va_list args;
@@ -640,7 +642,7 @@ PHPAPI void php_stream_error(php_stream *stream, const char *docref, int severit
const char *wrapper_name = stream->wrapper ? stream->wrapper->wops->label : "stream";
- php_stream_context *context = PHP_STREAM_CONTEXT(stream);
+ const php_stream_context *context = PHP_STREAM_CONTEXT(stream);
php_stream_wrapper_error_internal(wrapper_name, context, docref, severity,
terminating, code, message);
@@ -694,7 +696,7 @@ static void php_stream_wrapper_log_store_error(zend_string *message, zend_enum_S
}
PHPAPI void php_stream_wrapper_log_error(const php_stream_wrapper *wrapper,
- php_stream_context *context, int options, int severity, bool terminating,
+ const php_stream_context *context, int options, int severity, bool terminating,
zend_enum_StreamErrorCode code, const char *fmt, ...)
{
va_list args;
@@ -722,12 +724,12 @@ static zend_llist *php_stream_get_wrapper_errors_list(const char *wrapper_name)
}
PHPAPI void php_stream_display_wrapper_name_errors(const char *wrapper_name,
- php_stream_context *context, zend_enum_StreamErrorCode code,
+ const php_stream_context *context, zend_enum_StreamErrorCode code,
const char *caption)
{
char *msg;
char errstr[256];
- int free_msg = 0;
+ bool free_msg = false;
if (EG(exception)) {
return;
@@ -737,9 +739,7 @@ PHPAPI void php_stream_display_wrapper_name_errors(const char *wrapper_name,
zend_llist *err_list = php_stream_get_wrapper_errors_list(wrapper_name);
if (err_list) {
size_t l = 0;
- int brlen;
- int i;
- int count = (int) zend_llist_count(err_list);
+ size_t brlen;
const char *br;
php_stream_error_entry **err_entry_p;
zend_llist_position pos;
@@ -752,7 +752,9 @@ PHPAPI void php_stream_display_wrapper_name_errors(const char *wrapper_name,
br = "\n";
}
- for (err_entry_p = zend_llist_get_first_ex(err_list, &pos), i = 0; err_entry_p;
+ size_t i = 0;
+ const size_t count = zend_llist_count(err_list);
+ for (i = 0, err_entry_p = zend_llist_get_first_ex(err_list, &pos); err_entry_p;
err_entry_p = zend_llist_get_next_ex(err_list, &pos), i++) {
l += ZSTR_LEN((*err_entry_p)->message);
if (i < count - 1) {
@@ -769,7 +771,7 @@ PHPAPI void php_stream_display_wrapper_name_errors(const char *wrapper_name,
}
}
- free_msg = 1;
+ free_msg = true;
} else {
if (!strcmp(wrapper_name, php_plain_files_wrapper.wops->label)) {
msg = php_socket_strerror_s(errno, errstr, sizeof(errstr));
@@ -791,8 +793,8 @@ PHPAPI void php_stream_display_wrapper_name_errors(const char *wrapper_name,
}
}
-PHPAPI void php_stream_display_wrapper_errors(php_stream_wrapper *wrapper,
- php_stream_context *context, zend_enum_StreamErrorCode code,
+PHPAPI void php_stream_display_wrapper_errors(const php_stream_wrapper *wrapper,
+ const php_stream_context *context, zend_enum_StreamErrorCode code,
const char *caption)
{
if (wrapper) {
@@ -808,7 +810,7 @@ PHPAPI void php_stream_tidy_wrapper_name_error_log(const char *wrapper_name)
}
}
-PHPAPI void php_stream_tidy_wrapper_error_log(php_stream_wrapper *wrapper)
+PHPAPI void php_stream_tidy_wrapper_error_log(const php_stream_wrapper *wrapper)
{
if (wrapper) {
const char *wrapper_name = PHP_STREAM_ERROR_WRAPPER_NAME(wrapper);
@@ -822,7 +824,7 @@ PHP_METHOD(StreamException, getErrors)
{
ZEND_PARSE_PARAMETERS_NONE();
- zval *errors = zend_read_property(
+ const zval *errors = zend_read_property(
php_ce_stream_exception, Z_OBJ_P(ZEND_THIS), ZEND_STRL("errors"), 1, NULL);
RETURN_COPY(errors);