X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fengine.c;h=4415e4b093dc4c656f491d19798fa40754074e1f;hp=0c170cb63f5e4839e5cde371752bd8726bd7b4ab;hb=70f215a31fab4be1fe3e80125eb401e11eb02b9f;hpb=b9193a8d80bf7ea8d768b9521bcd298a03974c9d diff --git a/src/engine.c b/src/engine.c index 0c170cb..4415e4b 100644 --- a/src/engine.c +++ b/src/engine.c @@ -201,7 +201,7 @@ static inline ZEND_RESULT_CODE psi_parse_args(zend_execute_data *execute_data, i Z_PARAM_FUNC_EX(fci, fcc, 1, 0); if (fci.size) { - iarg->val.zend.cb = calloc(1, sizeof(zend_fcall)); + iarg->val.zend.cb = ecalloc(1, sizeof(zend_fcall)); iarg->val.zend.cb->fci = fci; iarg->val.zend.cb->fcc = fcc; } @@ -372,6 +372,14 @@ static inline void psi_do_clean(impl *impl) zend_string_release(iarg->val.zend.str); } break; + case PSI_T_CALLABLE: + if (iarg->val.zend.cb) { + if (iarg->val.zend.cb->fci.size) { + zend_fcall_info_args_clear(&iarg->val.zend.cb->fci, 1); + } + efree(iarg->val.zend.cb); + } + break; } }