]> granicus.if.org Git - php/commitdiff
actually copy input to return_value
authorAntony Dovgal <tony2001@php.net>
Mon, 13 Nov 2006 14:59:47 +0000 (14:59 +0000)
committerAntony Dovgal <tony2001@php.net>
Mon, 13 Nov 2006 14:59:47 +0000 (14:59 +0000)
input is a local var, you can't use it this way

ext/filter/filter.c

index 344353b0bcf5d301a24d07934988b8dc0eb9a6ab..56f2c27818c4af76908ab6221122aa3d270f061d 100644 (file)
@@ -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);