]> granicus.if.org Git - php/commitdiff
Explicitly create references in UConverter callbacks
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 7 Jul 2020 07:29:21 +0000 (09:29 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 7 Jul 2020 07:29:21 +0000 (09:29 +0200)
And don't allow separation.

ext/intl/converter/converter.c

index e6acf4d4b700220541082f7ea08c9107e49e6bc5..efb4df279e03bddad452d95f5648201fe3699a9d 100644 (file)
@@ -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()");