]> granicus.if.org Git - php/commitdiff
Avoid some unnecessary uses of no_separation=0
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 6 Jul 2020 16:57:41 +0000 (18:57 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 6 Jul 2020 17:05:57 +0000 (19:05 +0200)
For the rare cases where references are part of the API,
construct them explicitly. Otherwise do not allow separation.

Zend/zend_API.h
ext/ldap/ldap.c
ext/openssl/xp_ssl.c
ext/standard/streamsfuncs.c
ext/standard/user_filters.c
ext/standard/var_unserializer.re
ext/zip/php_zip.c
main/streams/userspace.c

index 578cf629f836bd7cc4532aab91908263c997e9ca..1adfbacb058f7cf07b421718b4b3cdea24bd7573 100644 (file)
@@ -500,9 +500,9 @@ ZEND_API int add_property_zval_ex(zval *arg, const char *key, size_t key_len, zv
 
 ZEND_API int _call_user_function_ex(zval *object, zval *function_name, zval *retval_ptr, uint32_t param_count, zval params[], int no_separation);
 
-#define call_user_function(function_table, object, function_name, retval_ptr, param_count, params) \
+#define call_user_function(_unused, object, function_name, retval_ptr, param_count, params) \
        _call_user_function_ex(object, function_name, retval_ptr, param_count, params, 1)
-#define call_user_function_ex(function_table, object, function_name, retval_ptr, param_count, params, no_separation, symbol_table) \
+#define call_user_function_ex(_unused, object, function_name, retval_ptr, param_count, params, no_separation, _unused2) \
        _call_user_function_ex(object, function_name, retval_ptr, param_count, params, no_separation)
 
 ZEND_API extern const zend_fcall_info empty_fcall_info;
index 0d96dd00d0ff16ec1415faed4528cfefb19ae364..d2f0c6cb548f867b37f9a03f33f676c3caac2704 100644 (file)
@@ -3748,7 +3748,7 @@ int _ldap_rebind_proc(LDAP *ldap, const char *url, ber_tag_t req, ber_int_t msgi
        /* callback */
        ZVAL_COPY_VALUE(&cb_args[0], cb_link);
        ZVAL_STRING(&cb_args[1], url);
-       if (call_user_function_ex(EG(function_table), NULL, &ld->rebindproc, &cb_retval, 2, cb_args, 0, NULL) == SUCCESS && !Z_ISUNDEF(cb_retval)) {
+       if (call_user_function(EG(function_table), NULL, &ld->rebindproc, &cb_retval, 2, cb_args) == SUCCESS && !Z_ISUNDEF(cb_retval)) {
                retval = zval_get_long(&cb_retval);
                zval_ptr_dtor(&cb_retval);
        } else {
index 9604feeb1402ad6d85a25bbd59ad06b253a3943b..3e2b72d9db4e6914cca3be0fd13e3d517845c2c7 100644 (file)
@@ -1149,7 +1149,7 @@ static void php_openssl_limit_handshake_reneg(const SSL *ssl) /* {{{ */
 
                        /* Closing the stream inside this callback would segfault! */
                        stream->flags |= PHP_STREAM_FLAG_NO_FCLOSE;
-                       if (FAILURE == call_user_function_ex(NULL, NULL, val, &retval, 1, &param, 0, NULL)) {
+                       if (FAILURE == call_user_function(NULL, NULL, val, &retval, 1, &param)) {
                                php_error(E_WARNING, "SSL: failed invoking reneg limit notification callback");
                        }
                        stream->flags ^= PHP_STREAM_FLAG_NO_FCLOSE;
index 7875285f5613f2e0b816b05575448b50f3dcd10f..cc52b429c849cb1c21948b657606d3a0c9f37f16 100644 (file)
@@ -859,7 +859,7 @@ static void user_space_stream_notifier(php_stream_context *context, int notifyco
        ZVAL_LONG(&zvs[4], bytes_sofar);
        ZVAL_LONG(&zvs[5], bytes_max);
 
-       if (FAILURE == call_user_function_ex(NULL, NULL, callback, &retval, 6, zvs, 0, NULL)) {
+       if (FAILURE == call_user_function(NULL, NULL, callback, &retval, 6, zvs)) {
                php_error_docref(NULL, E_WARNING, "Failed to call user notifier");
        }
        for (i = 0; i < 6; i++) {
index 4d11ae2b4410ed9f4113b2d48f00998e7ddda312..7b3197b981d35f25c1a3c70cca31980ce5341179 100644 (file)
@@ -174,15 +174,15 @@ php_stream_filter_status_t userfilter_filter(
        } else {
                ZVAL_NULL(&args[2]);
        }
+       ZVAL_MAKE_REF(&args[2]);
 
        ZVAL_BOOL(&args[3], flags & PSFS_FLAG_FLUSH_CLOSE);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        obj,
                        &func_name,
                        &retval,
-                       4, args,
-                       0, NULL);
+                       4, args);
 
        zval_ptr_dtor(&func_name);
 
index 9aadaf58431c745ac86e5b43debc43a40dff7873..8df84805016abb43fc92329afebb1a98bad04c15 100644 (file)
@@ -1097,7 +1097,7 @@ object ":" uiv ":" ["]    {
 
                ZVAL_STR_COPY(&args[0], class_name);
                BG(serialize_lock)++;
-               if (call_user_function_ex(NULL, NULL, &user_func, &retval, 1, args, 0, NULL) != SUCCESS) {
+               if (call_user_function(NULL, NULL, &user_func, &retval, 1, args) != SUCCESS) {
                        BG(serialize_lock)--;
                        if (EG(exception)) {
                                zend_string_release_ex(class_name, 0);
index 8151ad13ce3cc677319f8d16bab2f90f05d903d1..83b600e265999fbd59114841e0844ac85197033d 100644 (file)
@@ -2929,7 +2929,7 @@ static void _php_zip_progress_callback(zip_t *arch, double state, void *ptr)
        ze_zip_object *obj = ptr;
 
        ZVAL_DOUBLE(&cb_args[0], state);
-       if (call_user_function_ex(EG(function_table), NULL, &obj->progress_callback, &cb_retval, 1, cb_args, 0, NULL) == SUCCESS && !Z_ISUNDEF(cb_retval)) {
+       if (call_user_function(EG(function_table), NULL, &obj->progress_callback, &cb_retval, 1, cb_args) == SUCCESS && !Z_ISUNDEF(cb_retval)) {
                zval_ptr_dtor(&cb_retval);
        }
 }
@@ -2985,7 +2985,7 @@ static int _php_zip_cancel_callback(zip_t *arch, void *ptr)
        int retval = 0;
        ze_zip_object *obj = ptr;
 
-       if (call_user_function_ex(EG(function_table), NULL, &obj->cancel_callback, &cb_retval, 0, NULL, 0, NULL) == SUCCESS && !Z_ISUNDEF(cb_retval)) {
+       if (call_user_function(EG(function_table), NULL, &obj->cancel_callback, &cb_retval, 0, NULL) == SUCCESS && !Z_ISUNDEF(cb_retval)) {
                retval = zval_get_long(&cb_retval);
                zval_ptr_dtor(&cb_retval);
        }
index ffdd0754e4f0ee708b3d278c0d9079f9aabe92b5..6c75c1b2edb82cd44a728445d658f13402063f62 100644 (file)
@@ -373,12 +373,11 @@ static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, const char *
        ZVAL_STRING(&zfuncname, USERSTREAM_OPEN);
 
        zend_try {
-               call_result = call_user_function_ex(NULL,
+               call_result = call_user_function(NULL,
                                Z_ISUNDEF(us->object)? NULL : &us->object,
                                &zfuncname,
                                &zretval,
-                               4, args,
-                               0, NULL );
+                               4, args);
        } zend_catch {
                FG(user_stream_current_filename) = NULL;
                zend_bailout();
@@ -452,12 +451,11 @@ static php_stream *user_wrapper_opendir(php_stream_wrapper *wrapper, const char
 
        ZVAL_STRING(&zfuncname, USERSTREAM_DIR_OPEN);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        Z_ISUNDEF(us->object)? NULL : &us->object,
                        &zfuncname,
                        &zretval,
-                       2, args,
-                       0, NULL );
+                       2, args);
 
        if (call_result == SUCCESS && Z_TYPE(zretval) != IS_UNDEF && zval_is_true(&zretval)) {
                /* the stream is now open! */
@@ -601,12 +599,11 @@ static ssize_t php_userstreamop_write(php_stream *stream, const char *buf, size_
 
        ZVAL_STRINGL(&args[0], (char*)buf, count);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        Z_ISUNDEF(us->object)? NULL : &us->object,
                        &func_name,
                        &retval,
-                       1, args,
-                       0, NULL);
+                       1, args);
        zval_ptr_dtor(&args[0]);
        zval_ptr_dtor(&func_name);
 
@@ -655,12 +652,11 @@ static ssize_t php_userstreamop_read(php_stream *stream, char *buf, size_t count
 
        ZVAL_LONG(&args[0], count);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        Z_ISUNDEF(us->object)? NULL : &us->object,
                        &func_name,
                        &retval,
-                       1, args,
-                       0, NULL);
+                       1, args);
 
        zval_ptr_dtor(&args[0]);
        zval_ptr_dtor(&func_name);
@@ -796,12 +792,11 @@ static int php_userstreamop_seek(php_stream *stream, zend_off_t offset, int when
        ZVAL_LONG(&args[0], offset);
        ZVAL_LONG(&args[1], whence);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        Z_ISUNDEF(us->object)? NULL : &us->object,
                        &func_name,
                        &retval,
-                       2, args,
-                       0, NULL);
+                       2, args);
 
        zval_ptr_dtor(&args[0]);
        zval_ptr_dtor(&args[1]);
@@ -969,11 +964,11 @@ static int php_userstreamop_set_option(php_stream *stream, int option, int value
                /* TODO wouldblock */
                ZVAL_STRINGL(&func_name, USERSTREAM_LOCK, sizeof(USERSTREAM_LOCK)-1);
 
-               call_result = call_user_function_ex(NULL,
+               call_result = call_user_function(NULL,
                                                Z_ISUNDEF(us->object)? NULL : &us->object,
                                                &func_name,
                                                &retval,
-                                               1, args, 0, NULL);
+                                               1, args);
 
                if (call_result == SUCCESS && (Z_TYPE(retval) == IS_FALSE || Z_TYPE(retval) == IS_TRUE)) {
                        ret = (Z_TYPE(retval) == IS_FALSE);
@@ -1010,11 +1005,11 @@ static int php_userstreamop_set_option(php_stream *stream, int option, int value
                        ptrdiff_t new_size = *(ptrdiff_t*) ptrparam;
                        if (new_size >= 0 && new_size <= (ptrdiff_t)LONG_MAX) {
                                ZVAL_LONG(&args[0], (zend_long)new_size);
-                               call_result = call_user_function_ex(NULL,
+                               call_result = call_user_function(NULL,
                                                                Z_ISUNDEF(us->object)? NULL : &us->object,
                                                                &func_name,
                                                                &retval,
-                                                               1, args, 0, NULL);
+                                                               1, args);
                                if (call_result == SUCCESS && Z_TYPE(retval) != IS_UNDEF) {
                                        if (Z_TYPE(retval) == IS_FALSE || Z_TYPE(retval) == IS_TRUE) {
                                                ret = (Z_TYPE(retval) == IS_TRUE) ? PHP_STREAM_OPTION_RETURN_OK :
@@ -1074,11 +1069,11 @@ static int php_userstreamop_set_option(php_stream *stream, int option, int value
                        break;
                }
 
-               call_result = call_user_function_ex(NULL,
+               call_result = call_user_function(NULL,
                        Z_ISUNDEF(us->object)? NULL : &us->object,
                        &func_name,
                        &retval,
-                       3, args, 0, NULL);
+                       3, args);
 
                if (call_result == FAILURE) {
                        php_error_docref(NULL, E_WARNING, "%s::" USERSTREAM_SET_OPTION " is not implemented!",
@@ -1124,12 +1119,11 @@ static int user_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int
 
        ZVAL_STRING(&zfuncname, USERSTREAM_UNLINK);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        &object,
                        &zfuncname,
                        &zretval,
-                       1, args,
-                       0, NULL );
+                       1, args);
 
        if (call_result == SUCCESS && (Z_TYPE(zretval) == IS_FALSE || Z_TYPE(zretval) == IS_TRUE)) {
                ret = (Z_TYPE(zretval) == IS_TRUE);
@@ -1169,12 +1163,11 @@ static int user_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from
 
        ZVAL_STRING(&zfuncname, USERSTREAM_RENAME);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        &object,
                        &zfuncname,
                        &zretval,
-                       2, args,
-                       0, NULL );
+                       2, args);
 
        if (call_result == SUCCESS && (Z_TYPE(zretval) == IS_FALSE || Z_TYPE(zretval) == IS_TRUE)) {
                ret = (Z_TYPE(zretval) == IS_TRUE);
@@ -1216,12 +1209,11 @@ static int user_wrapper_mkdir(php_stream_wrapper *wrapper, const char *url, int
 
        ZVAL_STRING(&zfuncname, USERSTREAM_MKDIR);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        &object,
                        &zfuncname,
                        &zretval,
-                       3, args,
-                       0, NULL );
+                       3, args);
 
        if (call_result == SUCCESS && (Z_TYPE(zretval) == IS_FALSE || Z_TYPE(zretval) == IS_TRUE)) {
                ret = (Z_TYPE(zretval) == IS_TRUE);
@@ -1263,12 +1255,11 @@ static int user_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url,
 
        ZVAL_STRING(&zfuncname, USERSTREAM_RMDIR);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        &object,
                        &zfuncname,
                        &zretval,
-                       2, args,
-                       0, NULL );
+                       2, args);
 
        if (call_result == SUCCESS && (Z_TYPE(zretval) == IS_FALSE || Z_TYPE(zretval) == IS_TRUE)) {
                ret = (Z_TYPE(zretval) == IS_TRUE);
@@ -1334,12 +1325,11 @@ static int user_wrapper_metadata(php_stream_wrapper *wrapper, const char *url, i
 
        ZVAL_STRING(&zfuncname, USERSTREAM_METADATA);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        &object,
                        &zfuncname,
                        &zretval,
-                       3, args,
-                       0, NULL );
+                       3, args);
 
        if (call_result == SUCCESS && (Z_TYPE(zretval) == IS_FALSE || Z_TYPE(zretval) == IS_TRUE)) {
                ret = Z_TYPE(zretval) == IS_TRUE;
@@ -1382,12 +1372,11 @@ static int user_wrapper_stat_url(php_stream_wrapper *wrapper, const char *url, i
 
        ZVAL_STRING(&zfuncname, USERSTREAM_STATURL);
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        &object,
                        &zfuncname,
                        &zretval,
-                       2, args,
-                       0, NULL );
+                       2, args);
 
        if (call_result == SUCCESS && Z_TYPE(zretval) == IS_ARRAY) {
                /* We got the info we needed */
@@ -1517,11 +1506,11 @@ static int php_userstreamop_cast(php_stream *stream, int castas, void **retptr)
                break;
        }
 
-       call_result = call_user_function_ex(NULL,
+       call_result = call_user_function(NULL,
                        Z_ISUNDEF(us->object)? NULL : &us->object,
                        &func_name,
                        &retval,
-                       1, args, 0, NULL);
+                       1, args);
 
        do {
                if (call_result == FAILURE) {