From e93aca7167bee0a9f15007759e4372170f469ef5 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 7 Jul 2020 09:29:21 +0200 Subject: [PATCH] Explicitly create references in UConverter callbacks And don't allow separation. --- ext/intl/converter/converter.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ext/intl/converter/converter.c b/ext/intl/converter/converter.c index e6acf4d4b7..efb4df279e 100644 --- a/ext/intl/converter/converter.c +++ b/ext/intl/converter/converter.c @@ -224,11 +224,12 @@ static void php_converter_to_u_callback(const void *context, ZVAL_EMPTY_STRING(&zargs[2]); } ZVAL_LONG(&zargs[3], *pErrorCode); + ZVAL_MAKE_REF(&zargs[3]); objval->to_cb.param_count = 4; objval->to_cb.params = zargs; objval->to_cb.retval = &retval; - objval->to_cb.no_separation = 0; + objval->to_cb.no_separation = 1; if (zend_call_function(&(objval->to_cb), &(objval->to_cache)) == FAILURE) { /* Unlikely */ php_converter_throw_failure(objval, U_INTERNAL_PROGRAM_ERROR, "Unexpected failure calling toUCallback()"); @@ -306,11 +307,12 @@ static void php_converter_from_u_callback(const void *context, } ZVAL_LONG(&zargs[2], codePoint); ZVAL_LONG(&zargs[3], *pErrorCode); + ZVAL_MAKE_REF(&zargs[3]); objval->from_cb.param_count = 4; objval->from_cb.params = zargs; objval->from_cb.retval = &retval; - objval->from_cb.no_separation = 0; + objval->from_cb.no_separation = 1; if (zend_call_function(&(objval->from_cb), &(objval->from_cache)) == FAILURE) { /* Unlikely */ php_converter_throw_failure(objval, U_INTERNAL_PROGRAM_ERROR, "Unexpected failure calling fromUCallback()"); -- 2.50.1