jani Mon, 31 Aug 2009 21:18:55 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=287926
Log: - Fixed zlib.deflate compress filter to actually accpet level parameter. Changed paths: U php/php-src/branches/PHP_5_2/NEWS A php/php-src/branches/PHP_5_2/ext/zlib/tests/zlib_filter_deflate2.phpt U php/php-src/branches/PHP_5_2/ext/zlib/zlib_filter.c U php/php-src/branches/PHP_5_3/NEWS A php/php-src/branches/PHP_5_3/ext/zlib/tests/zlib_filter_deflate2.phpt U php/php-src/branches/PHP_5_3/ext/zlib/zlib_filter.c A php/php-src/trunk/ext/zlib/tests/zlib_filter_deflate2.phpt U php/php-src/trunk/ext/zlib/zlib_filter.c
Modified: php/php-src/branches/PHP_5_2/NEWS =================================================================== --- php/php-src/branches/PHP_5_2/NEWS 2009-08-31 19:22:29 UTC (rev 287925) +++ php/php-src/branches/PHP_5_2/NEWS 2009-08-31 21:18:55 UTC (rev 287926) @@ -3,6 +3,7 @@ ?? ??? 2009, PHP 5.2.11 - Added missing sanity checks around exif processing (Ilia) +- Fixed zlib.deflate compress filter to actually accpet level parameter. (Jani) - Fixed leak on error in popen/exec (and related functions on Windows. (Pierre) - Fixed bug #49361 (wordwrap() wraps incorrectly on end of line boundaries). Added: php/php-src/branches/PHP_5_2/ext/zlib/tests/zlib_filter_deflate2.phpt =================================================================== --- php/php-src/branches/PHP_5_2/ext/zlib/tests/zlib_filter_deflate2.phpt (rev 0) +++ php/php-src/branches/PHP_5_2/ext/zlib/tests/zlib_filter_deflate2.phpt 2009-08-31 21:18:55 UTC (rev 287926) @@ -0,0 +1,16 @@ +--TEST-- +zlib.deflate (with level parameter set) +--SKIPIF-- +<?php if (!extension_loaded("zlib")) print "skip"; ?> +--FILE-- +<?php +$text = 'I am the very model of a modern major general, I\'ve information vegetable, animal, and mineral.'; + +$fp = fopen('php://stdout', 'w'); +stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE, array('level' => 9)); +fwrite($fp, $text); +fclose($fp); + +?> +--EXPECT-- +A Dѫ1MBUv_(EL/aP=Pi;6fCe4U9;w5m/ Modified: php/php-src/branches/PHP_5_2/ext/zlib/zlib_filter.c =================================================================== --- php/php-src/branches/PHP_5_2/ext/zlib/zlib_filter.c 2009-08-31 19:22:29 UTC (rev 287925) +++ php/php-src/branches/PHP_5_2/ext/zlib/zlib_filter.c 2009-08-31 21:18:55 UTC (rev 287926) @@ -353,7 +353,7 @@ if (filterparams) { - zval **tmpzval; + zval **tmpzval, tmp; /* filterparams can either be a scalar value to indicate compression level (shortcut method) Or can be a hash containing one or more of 'window', 'memory', and/or 'level' members. */ @@ -362,8 +362,6 @@ case IS_ARRAY: case IS_OBJECT: if (zend_hash_find(HASH_OF(filterparams), "memory", sizeof("memory"), (void**) &tmpzval) == SUCCESS) { - zval tmp; - tmp = **tmpzval; zval_copy_ctor(&tmp); convert_to_long(&tmp); @@ -377,8 +375,6 @@ } if (zend_hash_find(HASH_OF(filterparams), "window", sizeof("window"), (void**) &tmpzval) == SUCCESS) { - zval tmp; - tmp = **tmpzval; zval_copy_ctor(&tmp); convert_to_long(&tmp); @@ -392,6 +388,8 @@ } if (zend_hash_find(HASH_OF(filterparams), "level", sizeof("level"), (void**) &tmpzval) == SUCCESS) { + tmp = **tmpzval; + /* Psuedo pass through to catch level validating code */ goto factory_setlevel; } @@ -399,19 +397,16 @@ case IS_STRING: case IS_DOUBLE: case IS_LONG: - { - zval tmp; - - tmp = *filterparams; - zval_copy_ctor(&tmp); - convert_to_long(&tmp); + tmp = *filterparams; factory_setlevel: - /* Set compression level within reason (-1 == default, 0 == none, 1-9 == least to most compression */ - if (Z_LVAL(tmp) < -1 || Z_LVAL(tmp) > 9) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid compression level specified. (%ld)", Z_LVAL(tmp)); - } else { - level = Z_LVAL(tmp); - } + zval_copy_ctor(&tmp); + convert_to_long(&tmp); + + /* Set compression level within reason (-1 == default, 0 == none, 1-9 == least to most compression */ + if (Z_LVAL(tmp) < -1 || Z_LVAL(tmp) > 9) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid compression level specified. (%ld)", Z_LVAL(tmp)); + } else { + level = Z_LVAL(tmp); } break; default: Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2009-08-31 19:22:29 UTC (rev 287925) +++ php/php-src/branches/PHP_5_3/NEWS 2009-08-31 21:18:55 UTC (rev 287926) @@ -16,6 +16,7 @@ - Improved shared extension loading on OSX to use the standard Unix dlopen() API. (Scott) +- Fixed zlib.deflate compress filter to actually accpet level parameter. (Jani) - Fixed leak on error in popen/exec (and related functions) on Windows. (Pierre) - Fixed possible bad caching of symlinked directories in the realpath cache Added: php/php-src/branches/PHP_5_3/ext/zlib/tests/zlib_filter_deflate2.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/zlib/tests/zlib_filter_deflate2.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/zlib/tests/zlib_filter_deflate2.phpt 2009-08-31 21:18:55 UTC (rev 287926) @@ -0,0 +1,16 @@ +--TEST-- +zlib.deflate (with level parameter set) +--SKIPIF-- +<?php if (!extension_loaded("zlib")) print "skip"; ?> +--FILE-- +<?php +$text = 'I am the very model of a modern major general, I\'ve information vegetable, animal, and mineral.'; + +$fp = fopen('php://stdout', 'w'); +stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE, array('level' => 9)); +fwrite($fp, $text); +fclose($fp); + +?> +--EXPECT-- +A Dѫ1MBUv_(EL/aP=Pi;6fCe4U9;w5m/ Modified: php/php-src/branches/PHP_5_3/ext/zlib/zlib_filter.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/zlib/zlib_filter.c 2009-08-31 19:22:29 UTC (rev 287925) +++ php/php-src/branches/PHP_5_3/ext/zlib/zlib_filter.c 2009-08-31 21:18:55 UTC (rev 287926) @@ -352,7 +352,7 @@ if (filterparams) { - zval **tmpzval; + zval **tmpzval, tmp; /* filterparams can either be a scalar value to indicate compression level (shortcut method) Or can be a hash containing one or more of 'window', 'memory', and/or 'level' members. */ @@ -361,8 +361,6 @@ case IS_ARRAY: case IS_OBJECT: if (zend_hash_find(HASH_OF(filterparams), "memory", sizeof("memory"), (void**) &tmpzval) == SUCCESS) { - zval tmp; - tmp = **tmpzval; zval_copy_ctor(&tmp); convert_to_long(&tmp); @@ -376,8 +374,6 @@ } if (zend_hash_find(HASH_OF(filterparams), "window", sizeof("window"), (void**) &tmpzval) == SUCCESS) { - zval tmp; - tmp = **tmpzval; zval_copy_ctor(&tmp); convert_to_long(&tmp); @@ -391,6 +387,8 @@ } if (zend_hash_find(HASH_OF(filterparams), "level", sizeof("level"), (void**) &tmpzval) == SUCCESS) { + tmp = **tmpzval; + /* Psuedo pass through to catch level validating code */ goto factory_setlevel; } @@ -398,19 +396,16 @@ case IS_STRING: case IS_DOUBLE: case IS_LONG: - { - zval tmp; - - tmp = *filterparams; - zval_copy_ctor(&tmp); - convert_to_long(&tmp); + tmp = *filterparams; factory_setlevel: - /* Set compression level within reason (-1 == default, 0 == none, 1-9 == least to most compression */ - if (Z_LVAL(tmp) < -1 || Z_LVAL(tmp) > 9) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid compression level specified. (%ld)", Z_LVAL(tmp)); - } else { - level = Z_LVAL(tmp); - } + zval_copy_ctor(&tmp); + convert_to_long(&tmp); + + /* Set compression level within reason (-1 == default, 0 == none, 1-9 == least to most compression */ + if (Z_LVAL(tmp) < -1 || Z_LVAL(tmp) > 9) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid compression level specified. (%ld)", Z_LVAL(tmp)); + } else { + level = Z_LVAL(tmp); } break; default: Added: php/php-src/trunk/ext/zlib/tests/zlib_filter_deflate2.phpt =================================================================== --- php/php-src/trunk/ext/zlib/tests/zlib_filter_deflate2.phpt (rev 0) +++ php/php-src/trunk/ext/zlib/tests/zlib_filter_deflate2.phpt 2009-08-31 21:18:55 UTC (rev 287926) @@ -0,0 +1,16 @@ +--TEST-- +zlib.deflate (with level parameter set) +--SKIPIF-- +<?php if (!extension_loaded("zlib")) print "skip"; ?> +--FILE-- +<?php +$text = 'I am the very model of a modern major general, I\'ve information vegetable, animal, and mineral.'; + +$fp = fopen('php://stdout', 'w'); +stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE, array('level' => 9)); +fwrite($fp, $text); +fclose($fp); + +?> +--EXPECT-- +A Dѫ1MBUv_(EL/aP=Pi;6fCe4U9;w5m/ Modified: php/php-src/trunk/ext/zlib/zlib_filter.c =================================================================== --- php/php-src/trunk/ext/zlib/zlib_filter.c 2009-08-31 19:22:29 UTC (rev 287925) +++ php/php-src/trunk/ext/zlib/zlib_filter.c 2009-08-31 21:18:55 UTC (rev 287926) @@ -370,7 +370,7 @@ if (filterparams) { - zval **tmpzval; + zval **tmpzval, tmp; /* filterparams can either be a scalar value to indicate compression level (shortcut method) Or can be a hash containing one or more of 'window', 'memory', and/or 'level' members. */ @@ -379,8 +379,6 @@ case IS_ARRAY: case IS_OBJECT: if (zend_hash_find(HASH_OF(filterparams), "memory", sizeof("memory"), (void**) &tmpzval) == SUCCESS) { - zval tmp; - tmp = **tmpzval; zval_copy_ctor(&tmp); convert_to_long(&tmp); @@ -394,8 +392,6 @@ } if (zend_hash_find(HASH_OF(filterparams), "window", sizeof("window"), (void**) &tmpzval) == SUCCESS) { - zval tmp; - tmp = **tmpzval; zval_copy_ctor(&tmp); convert_to_long(&tmp); @@ -409,6 +405,8 @@ } if (zend_hash_find(HASH_OF(filterparams), "level", sizeof("level"), (void**) &tmpzval) == SUCCESS) { + tmp = **tmpzval; + /* Psuedo pass through to catch level validating code */ goto factory_setlevel; } @@ -416,19 +414,16 @@ case IS_STRING: case IS_DOUBLE: case IS_LONG: - { - zval tmp; - - tmp = *filterparams; - zval_copy_ctor(&tmp); - convert_to_long(&tmp); + tmp = *filterparams; factory_setlevel: - /* Set compression level within reason (-1 == default, 0 == none, 1-9 == least to most compression */ - if (Z_LVAL(tmp) < -1 || Z_LVAL(tmp) > 9) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid compression level specified. (%ld)", Z_LVAL(tmp)); - } else { - level = Z_LVAL(tmp); - } + zval_copy_ctor(&tmp); + convert_to_long(&tmp); + + /* Set compression level within reason (-1 == default, 0 == none, 1-9 == least to most compression */ + if (Z_LVAL(tmp) < -1 || Z_LVAL(tmp) > 9) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid compression level specified. (%ld)", Z_LVAL(tmp)); + } else { + level = Z_LVAL(tmp); } break; default:
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php