X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fcall.c;h=57b57f0b9d6e8abf640710887ed459c138bd3e54;hp=2c18e9b0ce9a7b85359b92a6cfc42220ecf8d09f;hb=1df8639baf324038edd00ad15501ea3abb502cac;hpb=2fa436074ca9a5e87f39b696de832fa2188fcfc6 diff --git a/src/call.c b/src/call.c index 2c18e9b..57b57f0 100644 --- a/src/call.c +++ b/src/call.c @@ -30,7 +30,6 @@ #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) { @@ -199,13 +198,15 @@ zval *psi_call_frame_sub_argument(struct psi_call_frame *frame, 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; @@ -425,11 +426,7 @@ ZEND_RESULT_CODE psi_call_frame_do_assert(struct psi_call_frame *frame, enum psi 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; } }