Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 13 additions & 17 deletions Zend/zend.c
Original file line number Diff line number Diff line change
Expand Up @@ -1813,7 +1813,6 @@ ZEND_API void zend_free_recorded_errors(void)
ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const char *format, ...) /* {{{ */
{
va_list va;
char *message = NULL;

if (!exception_ce) {
exception_ce = zend_ce_error;
Expand All @@ -1825,16 +1824,16 @@ ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const c
}

va_start(va, format);
zend_vspprintf(&message, 0, format, va);
zend_string *message = zend_vstrpprintf(0, format, va);

//TODO: we can't convert compile-time errors to exceptions yet???
if (EG(current_execute_data) && !CG(in_compilation)) {
zend_throw_exception(exception_ce, message, 0);
zend_throw_exception_zstr(exception_ce, message, 0);
} else {
zend_error_noreturn(E_ERROR, "%s", message);
zend_error_noreturn(E_ERROR, "%s", ZSTR_VAL(message));
}

efree(message);
zend_string_release_ex(message, false);
va_end(va);
}
/* }}} */
Expand Down Expand Up @@ -1865,37 +1864,34 @@ ZEND_API ZEND_COLD void zend_illegal_container_offset(const zend_string *contain
ZEND_API ZEND_COLD void zend_type_error(const char *format, ...) /* {{{ */
{
va_list va;
char *message = NULL;

va_start(va, format);
zend_vspprintf(&message, 0, format, va);
zend_throw_exception(zend_ce_type_error, message, 0);
efree(message);
zend_string *message = zend_vstrpprintf(0, format, va);
zend_throw_exception_zstr(zend_ce_type_error, message, 0);
zend_string_release_ex(message, false);
va_end(va);
} /* }}} */

ZEND_API ZEND_COLD void zend_argument_count_error(const char *format, ...) /* {{{ */
{
va_list va;
char *message = NULL;

va_start(va, format);
zend_vspprintf(&message, 0, format, va);
zend_throw_exception(zend_ce_argument_count_error, message, 0);
efree(message);
zend_string *message = zend_vstrpprintf(0, format, va);
zend_throw_exception_zstr(zend_ce_argument_count_error, message, 0);
zend_string_release_ex(message, false);

va_end(va);
} /* }}} */

ZEND_API ZEND_COLD void zend_value_error(const char *format, ...) /* {{{ */
{
va_list va;
char *message = NULL;

va_start(va, format);
zend_vspprintf(&message, 0, format, va);
zend_throw_exception(zend_ce_value_error, message, 0);
efree(message);
zend_string *message = zend_vstrpprintf(0, format, va);
zend_throw_exception_zstr(zend_ce_value_error, message, 0);
zend_string_release_ex(message, false);
va_end(va);
} /* }}} */

Expand Down
2 changes: 1 addition & 1 deletion Zend/zend_exceptions.c
Original file line number Diff line number Diff line change
Expand Up @@ -853,7 +853,7 @@ void zend_register_default_exception(void) /* {{{ */
}
/* }}} */

static zend_object *zend_throw_exception_zstr(zend_class_entry *exception_ce, zend_string *message, zend_long code) /* {{{ */
ZEND_API ZEND_COLD zend_object *zend_throw_exception_zstr(zend_class_entry *exception_ce, zend_string *message, zend_long code) /* {{{ */
{
zval ex, tmp;

Expand Down
1 change: 1 addition & 0 deletions Zend/zend_exceptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ ZEND_API void zend_register_default_classes(void);

/* exception_ce NULL, zend_ce_exception, zend_ce_error, or a derived class
* message NULL or the message of the exception */
ZEND_API ZEND_COLD zend_object *zend_throw_exception_zstr(zend_class_entry *exception_ce, zend_string *message, zend_long code);
ZEND_API ZEND_COLD zend_object *zend_throw_exception(zend_class_entry *exception_ce, const char *message, zend_long code);
ZEND_API ZEND_COLD zend_object *zend_throw_exception_ex(zend_class_entry *exception_ce, zend_long code, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 3, 4);
ZEND_API ZEND_COLD void zend_throw_exception_object(zval *exception);
Expand Down
18 changes: 8 additions & 10 deletions ext/ffi/ffi.c
Original file line number Diff line number Diff line change
Expand Up @@ -3687,18 +3687,17 @@ void zend_ffi_cleanup_dcl(zend_ffi_dcl *dcl) /* {{{ */
static void zend_ffi_throw_parser_error(const char *format, ...) /* {{{ */
{
va_list va;
char *message = NULL;

va_start(va, format);
zend_vspprintf(&message, 0, format, va);
zend_string *message = zend_vstrpprintf(0, format, va);

if (EG(current_execute_data)) {
zend_throw_exception(zend_ffi_parser_exception_ce, message, 0);
zend_throw_exception_zstr(zend_ffi_parser_exception_ce, message, 0);
} else {
zend_error(E_WARNING, "FFI Parser: %s", message);
zend_error(E_WARNING, "FFI Parser: %s", ZSTR_VAL(message));
}

efree(message);
zend_string_release_ex(message, false);
va_end(va);
}
/* }}} */
Expand Down Expand Up @@ -5790,18 +5789,17 @@ ZEND_GET_MODULE(ffi)
void zend_ffi_parser_error(const char *format, ...) /* {{{ */
{
va_list va;
char *message = NULL;

va_start(va, format);
zend_vspprintf(&message, 0, format, va);
zend_string *message = zend_vstrpprintf(0, format, va);

if (EG(current_execute_data)) {
zend_throw_exception(zend_ffi_parser_exception_ce, message, 0);
zend_throw_exception_zstr(zend_ffi_parser_exception_ce, message, 0);
} else {
zend_error(E_WARNING, "FFI Parser: %s", message);
zend_error(E_WARNING, "FFI Parser: %s", ZSTR_VAL(message));
}

efree(message);
zend_string_release_ex(message, false);
va_end(va);

LONGJMP(FFI_G(bailout), FAILURE);
Expand Down
2 changes: 1 addition & 1 deletion ext/reflection/php_reflection.c
Original file line number Diff line number Diff line change
Expand Up @@ -7379,7 +7379,7 @@ ZEND_METHOD(ReflectionAttribute, newInstance)
);
ZEND_ASSERT(delayed_target_validation != NULL);
#endif
zend_throw_exception(zend_ce_error, ZSTR_VAL(attr->data->validation_error), 0);
zend_throw_exception_zstr(zend_ce_error, attr->data->validation_error, 0);
RETURN_THROWS();
}

Expand Down
2 changes: 1 addition & 1 deletion ext/standard/assert.c
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ PHP_FUNCTION(assert)
}

if (ASSERTG(exception)) {
zend_throw_exception(assertion_error_ce, description_str ? ZSTR_VAL(description_str) : NULL, E_ERROR);
zend_throw_exception_zstr(assertion_error_ce, description_str, E_ERROR);
if (ASSERTG(bail)) {
/* When bail is turned on, the exception will not be caught. */
zend_exception_error(EG(exception), E_ERROR);
Expand Down
Loading