]> granicus.if.org Git - php/commitdiff
A cheaper way to clone reference value.
authorDmitry Stogov <dmitry@zend.com>
Wed, 17 Jan 2018 07:59:50 +0000 (10:59 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 17 Jan 2018 07:59:50 +0000 (10:59 +0300)
ext/mysqli/mysqli_api.c

index a9d0273bc97400f8ea3fbd0693d4d932a776cf17..fe5b4dbd4a6d18f0859c01c952e09c2476a97c24 100644 (file)
@@ -880,9 +880,11 @@ PHP_FUNCTION(mysqli_stmt_execute)
                        }
                        for (j = i + 1; j < stmt->param.var_cnt; j++) {
                                /* Oops, someone binding the same variable - clone */
-                               if (Z_TYPE(stmt->param.vars[j]) == Z_TYPE(stmt->param.vars[i]) &&
+                               if (Z_ISREF(stmt->param.vars[j]) &&
                                                Z_REFVAL(stmt->param.vars[j]) == Z_REFVAL(stmt->param.vars[i])) {
-                                       SEPARATE_ZVAL(&stmt->param.vars[j]);
+                                       /*SEPARATE_ZVAL(&stmt->param.vars[j]);*/
+                                       Z_DELREF_P(&stmt->param.vars[j]);
+                                       ZVAL_COPY(&stmt->param.vars[j], Z_REFVAL(stmt->param.vars[j]));
                                        break;
                                }
                        }