diff --git a/ext/filter/filter.c b/ext/filter/filter.c index 344353b0bcf..56f2c27818c 100644 --- a/ext/filter/filter.c +++ b/ext/filter/filter.c @@ -617,10 +617,12 @@ static void php_filter_array_handler(zval *input, zval **op, zval *return_value if (!op) { SEPARATE_ZVAL(&input); *return_value = *input; + zval_copy_ctor(return_value); php_filter_call(&return_value, FILTER_DEFAULT, NULL, 0, FILTER_REQUIRE_ARRAY TSRMLS_CC); } else if (Z_TYPE_PP(op) == IS_LONG) { SEPARATE_ZVAL(&input); *return_value = *input; + zval_copy_ctor(return_value); php_filter_call(&return_value, Z_LVAL_PP(op), NULL, 0, FILTER_REQUIRE_ARRAY TSRMLS_CC); } else if (Z_TYPE_PP(op) == IS_ARRAY) { array_init(return_value);