#include "php.h"
#include "zend_exceptions.h"
-#include "ext/spl/spl_exceptions.h"
struct psi_call_frame_argument *psi_call_frame_argument_init(struct psi_impl_arg *spec,
impl_val *ival, zval *zptr, int is_vararg) {
if (!iarg) {
struct psi_call_frame_argument *frame_arg;
impl_val empty_val = {0};
+ zend_string *type_str = zend_string_init_interned(ZEND_STRL("mixed"), 1);
struct psi_impl_arg *carg_spec = psi_impl_arg_init(
- psi_impl_type_init(PSI_T_MIXED, zend_string_init(ZEND_STRL("mixed"), 1)),
+ psi_impl_type_init(PSI_T_MIXED, type_str),
psi_impl_var_copy(inner_var), NULL);
psi_call_frame_push_auto_ex(frame, carg_spec, (void(*)(void*)) psi_impl_arg_free);
frame_arg = psi_call_frame_argument_init(carg_spec, &empty_val, inner_zval, 0);
zend_hash_add_ptr(&frame->arguments, name, frame_arg);
+ zend_string_release(type_str);
}
return inner_zval;
while (psi_plist_get(frame->impl->stmts.ass, i++, &ass)) {
if (ass->kind == kind) {
if (!psi_assert_stmt_exec(ass, frame)) {
- char *message = psi_assert_stmt_message(ass);
- zend_throw_exception(kind == PSI_ASSERT_PRE
- ? spl_ce_InvalidArgumentException
- : spl_ce_UnexpectedValueException, message, 0);
- free(message);
+ psi_assert_stmt_throw(ass);
return FAILURE;
}
}