-struct fcd {
- zval *fcz;
- zend_fcall_info fci;
- zend_fcall_info_cache fcc;
-#ifdef ZTS
- void ***ts;
-#endif
-};
-
-static size_t pass(void *cb_arg, const char *str, size_t len)
-{
- struct fcd *fcd = cb_arg;
- zval *zdata;
- TSRMLS_FETCH_FROM_CTX(fcd->ts);
-
- MAKE_STD_ZVAL(zdata);
- ZVAL_STRINGL(zdata, str, len, 1);
- if (SUCCESS == zend_fcall_info_argn(&fcd->fci TSRMLS_CC, 2, &fcd->fcz, &zdata)) {
- zend_fcall_info_call(&fcd->fci, &fcd->fcc, NULL, NULL TSRMLS_CC);
- zend_fcall_info_args_clear(&fcd->fci, 0);
- }
- zval_ptr_dtor(&zdata);
- return len;
-}