[PHP-CVS] cvs: php-src /ext/zlib zlib_filter.c
kalle Tue May 19 16:12:04 2009 UTC Modified files: /php-src/ext/zlib zlib_filter.c Log: Fix compiler warnings (only in HEAD) http://cvs.php.net/viewvc.cgi/php-src/ext/zlib/zlib_filter.c?r1=1.26r2=1.27diff_format=u Index: php-src/ext/zlib/zlib_filter.c diff -u php-src/ext/zlib/zlib_filter.c:1.26 php-src/ext/zlib/zlib_filter.c:1.27 --- php-src/ext/zlib/zlib_filter.c:1.26 Tue Mar 10 23:39:52 2009 +++ php-src/ext/zlib/zlib_filter.c Tue May 19 16:12:04 2009 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: zlib_filter.c,v 1.26 2009/03/10 23:39:52 helly Exp $ */ +/* $Id: zlib_filter.c,v 1.27 2009/05/19 16:12:04 kalle Exp $ */ #include php.h #include php_zlib.h @@ -88,7 +88,7 @@ } bucket = php_stream_bucket_make_writeable(buckets_in-head TSRMLS_CC); - while (bin bucket-buflen) { + while (bin (unsigned int) bucket-buflen) { if (data-finished) { consumed += bucket-buflen; @@ -220,7 +220,7 @@ bucket = php_stream_bucket_make_writeable(bucket TSRMLS_CC); - while (bin bucket-buflen) { + while (bin (unsigned int) bucket-buflen) { desired = bucket-buflen - bin; if (desired data-inbuf_len) { desired = data-inbuf_len; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/zlib zlib_filter.c
cellog Tue Feb 12 23:27:46 2008 UTC Modified files: /php-src/ext/zlib zlib_filter.c Log: fix potential memleak due to destruction of filterparams zval http://cvs.php.net/viewvc.cgi/php-src/ext/zlib/zlib_filter.c?r1=1.22r2=1.23diff_format=u Index: php-src/ext/zlib/zlib_filter.c diff -u php-src/ext/zlib/zlib_filter.c:1.22 php-src/ext/zlib/zlib_filter.c:1.23 --- php-src/ext/zlib/zlib_filter.c:1.22 Sat Jan 12 22:28:04 2008 +++ php-src/ext/zlib/zlib_filter.c Tue Feb 12 23:27:46 2008 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: zlib_filter.c,v 1.22 2008/01/12 22:28:04 cellog Exp $ */ +/* $Id: zlib_filter.c,v 1.23 2008/02/12 23:27:46 cellog Exp $ */ #include php.h #include php_zlib.h @@ -332,15 +332,17 @@ if ((Z_TYPE_P(filterparams) == IS_ARRAY || Z_TYPE_P(filterparams) == IS_OBJECT) zend_hash_find(HASH_OF(filterparams), window, sizeof(window), (void **) tmpzval) == SUCCESS) { + zval tmp; + /* log-2 base of history window (9 - 15) */ - SEPARATE_ZVAL(tmpzval); - convert_to_long_ex(tmpzval); - if (Z_LVAL_PP(tmpzval) -MAX_WBITS || Z_LVAL_PP(tmpzval) MAX_WBITS + 32) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid parameter give for window size. (%ld), Z_LVAL_PP(tmpzval)); + tmp = **tmpzval; + zval_copy_ctor(tmp); + convert_to_long(tmp); + if (Z_LVAL(tmp) -MAX_WBITS || Z_LVAL(tmp) MAX_WBITS + 32) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid parameter give for window size. (%ld), Z_LVAL(tmp)); } else { - windowBits = Z_LVAL_PP(tmpzval); + windowBits = Z_LVAL(tmp); } - zval_ptr_dtor(tmpzval); } } @@ -364,27 +366,33 @@ 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); + /* Memory Level (1 - 9) */ - SEPARATE_ZVAL(tmpzval); - convert_to_long_ex(tmpzval); - if (Z_LVAL_PP(tmpzval) 1 || Z_LVAL_PP(tmpzval) MAX_MEM_LEVEL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid parameter give for memory level. (%ld), Z_LVAL_PP(tmpzval)); + if (Z_LVAL(tmp) 1 || Z_LVAL(tmp) MAX_MEM_LEVEL) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid parameter give for memory level. (%ld), Z_LVAL(tmp)); } else { - memLevel = Z_LVAL_PP(tmpzval); + memLevel = Z_LVAL(tmp); } - zval_ptr_dtor(tmpzval); } 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); + /* log-2 base of history window (9 - 15) */ - SEPARATE_ZVAL(tmpzval); - convert_to_long_ex(tmpzval); - if (Z_LVAL_PP(tmpzval) -MAX_WBITS || Z_LVAL_PP(tmpzval) MAX_WBITS + 16) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid parameter give for window size. (%ld), Z_LVAL_PP(tmpzval)); + if (Z_LVAL(tmp)
[PHP-CVS] cvs: php-src /ext/zlib zlib_filter.c
cellog Sat Jan 12 22:28:04 2008 UTC Modified files: /php-src/ext/zlib zlib_filter.c Log: wrong file version merged in fix for Bug #40189, here is the correct fix http://cvs.php.net/viewvc.cgi/php-src/ext/zlib/zlib_filter.c?r1=1.21r2=1.22diff_format=u Index: php-src/ext/zlib/zlib_filter.c diff -u php-src/ext/zlib/zlib_filter.c:1.21 php-src/ext/zlib/zlib_filter.c:1.22 --- php-src/ext/zlib/zlib_filter.c:1.21 Sat Jan 12 22:03:44 2008 +++ php-src/ext/zlib/zlib_filter.c Sat Jan 12 22:28:04 2008 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: zlib_filter.c,v 1.21 2008/01/12 22:03:44 cellog Exp $ */ +/* $Id: zlib_filter.c,v 1.22 2008/01/12 22:28:04 cellog Exp $ */ #include php.h #include php_zlib.h @@ -106,7 +106,7 @@ data-strm.avail_in = 0; bin += desired; - if (status == Z_STREAM_END || data-strm.avail_out data-outbuf_len) { + if (data-strm.avail_out data-outbuf_len) { php_stream_bucket *out_bucket; size_t bucketlen = data-outbuf_len - data-strm.avail_out; out_bucket = php_stream_bucket_new(stream, estrndup(data-outbuf, bucketlen), bucketlen, 1, 0 TSRMLS_CC); @@ -114,12 +114,12 @@ data-strm.avail_out = data-outbuf_len; data-strm.next_out = data-outbuf; exit_status = PSFS_PASS_ON; - if (status == Z_STREAM_END data-strm.avail_out = data-outbuf_len) { - /* no more data to decompress, and nothing was spat out */ - php_stream_bucket_delref(bucket TSRMLS_CC); - return PSFS_PASS_ON; - } + } else if (status == Z_STREAM_END data-strm.avail_out = data-outbuf_len) { + /* no more data to decompress, and nothing was spat out */ + php_stream_bucket_delref(bucket TSRMLS_CC); + return PSFS_PASS_ON; } + } consumed += bucket-buflen; php_stream_bucket_delref(bucket TSRMLS_CC); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/zlib zlib_filter.c
cellog Wed Jan 9 08:12:15 2008 UTC Modified files: /php-src/ext/zlib zlib_filter.c Log: apply proper fix of bug #43793 to zlib.deflate (window+16 = gzip) http://cvs.php.net/viewvc.cgi/php-src/ext/zlib/zlib_filter.c?r1=1.18r2=1.19diff_format=u Index: php-src/ext/zlib/zlib_filter.c diff -u php-src/ext/zlib/zlib_filter.c:1.18 php-src/ext/zlib/zlib_filter.c:1.19 --- php-src/ext/zlib/zlib_filter.c:1.18 Wed Jan 9 07:03:48 2008 +++ php-src/ext/zlib/zlib_filter.c Wed Jan 9 08:12:15 2008 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: zlib_filter.c,v 1.18 2008/01/09 07:03:48 cellog Exp $ */ +/* $Id: zlib_filter.c,v 1.19 2008/01/09 08:12:15 cellog Exp $ */ #include php.h #include php_zlib.h @@ -379,7 +379,7 @@ /* log-2 base of history window (9 - 15) */ SEPARATE_ZVAL(tmpzval); convert_to_long_ex(tmpzval); - if (Z_LVAL_PP(tmpzval) -MAX_WBITS || Z_LVAL_PP(tmpzval) MAX_WBITS + 32) { + if (Z_LVAL_PP(tmpzval) -MAX_WBITS || Z_LVAL_PP(tmpzval) MAX_WBITS + 16) { php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid parameter give for window size. (%ld), Z_LVAL_PP(tmpzval)); } else { windowBits = Z_LVAL_PP(tmpzval); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/zlib zlib_filter.c /ext/zlib/tests zlib_filter_inflate2.phpt
cellog Wed Jan 9 06:42:56 2008 UTC Added files: /php-src/ext/zlib/tests zlib_filter_inflate2.phpt Modified files: /php-src/ext/zlib zlib_filter.c Log: fix Bug #43793: zlib filter is unable to auto-detect gzip/zlib file headers http://cvs.php.net/viewvc.cgi/php-src/ext/zlib/zlib_filter.c?r1=1.16r2=1.17diff_format=u Index: php-src/ext/zlib/zlib_filter.c diff -u php-src/ext/zlib/zlib_filter.c:1.16 php-src/ext/zlib/zlib_filter.c:1.17 --- php-src/ext/zlib/zlib_filter.c:1.16 Mon Dec 31 07:12:18 2007 +++ php-src/ext/zlib/zlib_filter.c Wed Jan 9 06:42:56 2008 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: zlib_filter.c,v 1.16 2007/12/31 07:12:18 sebastian Exp $ */ +/* $Id: zlib_filter.c,v 1.17 2008/01/09 06:42:56 cellog Exp $ */ #include php.h #include php_zlib.h @@ -335,7 +335,7 @@ /* log-2 base of history window (9 - 15) */ SEPARATE_ZVAL(tmpzval); convert_to_long_ex(tmpzval); - if (Z_LVAL_PP(tmpzval) -MAX_WBITS || Z_LVAL_PP(tmpzval) MAX_WBITS) { + if (Z_LVAL_PP(tmpzval) -MAX_WBITS || Z_LVAL_PP(tmpzval) MAX_WBITS + 32) { php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid parameter give for window size. (%ld), Z_LVAL_PP(tmpzval)); } else { windowBits = Z_LVAL_PP(tmpzval); http://cvs.php.net/viewvc.cgi/php-src/ext/zlib/tests/zlib_filter_inflate2.phpt?view=markuprev=1.1 Index: php-src/ext/zlib/tests/zlib_filter_inflate2.phpt +++ php-src/ext/zlib/tests/zlib_filter_inflate2.phpt --TEST-- zlib.inflate of gzip-encoded stream --SKIPIF-- ?php if (!extension_loaded(zlib)) print skip; ? --FILE-- ?php /* $Id: zlib_filter_inflate2.phpt,v 1.1 2008/01/09 06:42:56 cellog Exp $ */ $a = gzopen(dirname(__FILE__) . '/test.txt.gz', 'w'); fwrite($a, This is quite the thing ain't it\n); fclose($a); $fp = fopen(dirname(__FILE__) . '/test.txt.gz', 'r'); stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ); echo fread($fp, 2000); fclose($fp); echo 1\n; $fp = fopen(dirname(__FILE__) . '/test.txt.gz', 'r'); // zlib format $fp = fopen(dirname(__FILE__) . '/test.txt.gz', 'r'); stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ, array('window' = 15+16)); echo 2\n; echo fread($fp, 2000); fclose($fp); // auto-detect $fp = fopen(dirname(__FILE__) . '/test.txt.gz', 'r'); stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ, array('window' = 15+32)); echo 3\n; echo fread($fp, 2000); fclose($fp); ? --CLEAN-- ?php @unlink(dirname(__FILE__) . '/test.txt.gz'); ? --EXPECT-- 1 2 This is quite the thing ain't it 3 This is quite the thing ain't it -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/zlib zlib_filter.c
cellog Wed Jan 9 07:03:49 2008 UTC Modified files: /php-src/ext/zlib zlib_filter.c Log: apply same fix of bug #43793 to zlib.deflate http://cvs.php.net/viewvc.cgi/php-src/ext/zlib/zlib_filter.c?r1=1.17r2=1.18diff_format=u Index: php-src/ext/zlib/zlib_filter.c diff -u php-src/ext/zlib/zlib_filter.c:1.17 php-src/ext/zlib/zlib_filter.c:1.18 --- php-src/ext/zlib/zlib_filter.c:1.17 Wed Jan 9 06:42:56 2008 +++ php-src/ext/zlib/zlib_filter.c Wed Jan 9 07:03:48 2008 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: zlib_filter.c,v 1.17 2008/01/09 06:42:56 cellog Exp $ */ +/* $Id: zlib_filter.c,v 1.18 2008/01/09 07:03:48 cellog Exp $ */ #include php.h #include php_zlib.h @@ -379,7 +379,7 @@ /* log-2 base of history window (9 - 15) */ SEPARATE_ZVAL(tmpzval); convert_to_long_ex(tmpzval); - if (Z_LVAL_PP(tmpzval) -MAX_WBITS || Z_LVAL_PP(tmpzval) MAX_WBITS) { + if (Z_LVAL_PP(tmpzval) -MAX_WBITS || Z_LVAL_PP(tmpzval) MAX_WBITS + 32) { php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid parameter give for window size. (%ld), Z_LVAL_PP(tmpzval)); } else { windowBits = Z_LVAL_PP(tmpzval); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/zlib zlib_filter.c
iliaa Mon Oct 16 15:42:23 2006 UTC Modified files: /php-src/ext/zlib zlib_filter.c Log: MFB: Fixed compiler warnings http://cvs.php.net/viewvc.cgi/php-src/ext/zlib/zlib_filter.c?r1=1.12r2=1.13diff_format=u Index: php-src/ext/zlib/zlib_filter.c diff -u php-src/ext/zlib/zlib_filter.c:1.12 php-src/ext/zlib/zlib_filter.c:1.13 --- php-src/ext/zlib/zlib_filter.c:1.12 Sun Oct 8 13:34:24 2006 +++ php-src/ext/zlib/zlib_filter.c Mon Oct 16 15:42:23 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: zlib_filter.c,v 1.12 2006/10/08 13:34:24 bjori Exp $ */ +/* $Id: zlib_filter.c,v 1.13 2006/10/16 15:42:23 iliaa Exp $ */ #include php.h #include php_zlib.h @@ -292,7 +292,7 @@ /* Create this filter */ data = pecalloc(1, sizeof(php_zlib_filter_data), persistent); if (!data) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %ld bytes, sizeof(php_zlib_filter_data)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %zd bytes, sizeof(php_zlib_filter_data)); return NULL; } @@ -304,14 +304,14 @@ data-strm.avail_out = data-outbuf_len = data-inbuf_len = 2048; data-strm.next_in = data-inbuf = (Bytef *) pemalloc(data-inbuf_len, persistent); if (!data-inbuf) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %ld bytes, data-inbuf_len); + php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %zd bytes, data-inbuf_len); pefree(data, persistent); return NULL; } data-strm.avail_in = 0; data-strm.next_out = data-outbuf = (Bytef *) pemalloc(data-outbuf_len, persistent); if (!data-outbuf) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %ld bytes, data-outbuf_len); + php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %zd bytes, data-outbuf_len); pefree(data-inbuf, persistent); pefree(data, persistent); return NULL; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/zlib zlib_filter.c
iliaa Mon Jun 12 23:28:44 2006 UTC Modified files: /php-src/ext/zlib zlib_filter.c Log: MFB: Fixed compiler warning http://cvs.php.net/viewcvs.cgi/php-src/ext/zlib/zlib_filter.c?r1=1.10r2=1.11diff_format=u Index: php-src/ext/zlib/zlib_filter.c diff -u php-src/ext/zlib/zlib_filter.c:1.10 php-src/ext/zlib/zlib_filter.c:1.11 --- php-src/ext/zlib/zlib_filter.c:1.10 Mon Mar 13 04:40:11 2006 +++ php-src/ext/zlib/zlib_filter.c Mon Jun 12 23:28:44 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: zlib_filter.c,v 1.10 2006/03/13 04:40:11 pollita Exp $ */ +/* $Id: zlib_filter.c,v 1.11 2006/06/12 23:28:44 iliaa Exp $ */ #include php.h #include php_zlib.h @@ -292,7 +292,7 @@ /* Create this filter */ data = pecalloc(1, sizeof(php_zlib_filter_data), persistent); if (!data) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %d bytes., sizeof(php_zlib_filter_data)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %ld bytes., sizeof(php_zlib_filter_data)); return NULL; } @@ -304,14 +304,14 @@ data-strm.avail_out = data-outbuf_len = data-inbuf_len = 2048; data-strm.next_in = data-inbuf = (Bytef *) pemalloc(data-inbuf_len, persistent); if (!data-inbuf) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %d bytes., data-inbuf_len); + php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %ld bytes., data-inbuf_len); pefree(data, persistent); return NULL; } data-strm.avail_in = 0; data-strm.next_out = data-outbuf = (Bytef *) pemalloc(data-outbuf_len, persistent); if (!data-outbuf) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %d bytes., data-outbuf_len); + php_error_docref(NULL TSRMLS_CC, E_WARNING, Failed allocating %ld bytes., data-outbuf_len); pefree(data-inbuf, persistent); pefree(data, persistent); return NULL; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/zlib zlib_filter.c
pollita Tue Nov 22 17:08:22 2005 EDT Modified files: /php-src/ext/zlib zlib_filter.c Log: MFB (r-1.6.2.1) http://cvs.php.net/diff.php/php-src/ext/zlib/zlib_filter.c?r1=1.7r2=1.8ty=u Index: php-src/ext/zlib/zlib_filter.c diff -u php-src/ext/zlib/zlib_filter.c:1.7 php-src/ext/zlib/zlib_filter.c:1.8 --- php-src/ext/zlib/zlib_filter.c:1.7 Thu Aug 11 19:36:02 2005 +++ php-src/ext/zlib/zlib_filter.c Tue Nov 22 17:08:22 2005 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: zlib_filter.c,v 1.7 2005/08/11 23:36:02 andrei Exp $ */ +/* $Id: zlib_filter.c,v 1.8 2005/11/22 22:08:22 pollita Exp $ */ #include php.h #include php_zlib.h @@ -320,7 +320,7 @@ data-strm.data_type = Z_ASCII; if (strcasecmp(filtername, zlib.inflate) == 0) { - int windowBits = MAX_WBITS; + int windowBits = -MAX_WBITS; if (filterparams) { zval **tmpzval; @@ -330,7 +330,7 @@ /* log-2 base of history window (9 - 15) */ SEPARATE_ZVAL(tmpzval); convert_to_long_ex(tmpzval); - if (Z_LVAL_PP(tmpzval) 9 || Z_LVAL_PP(tmpzval) MAX_WBITS) { + if (Z_LVAL_PP(tmpzval) -MAX_WBITS || Z_LVAL_PP(tmpzval) MAX_WBITS) { php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid parameter give for window size. (%ld), Z_LVAL_PP(tmpzval)); } else { windowBits = Z_LVAL_PP(tmpzval); @@ -345,7 +345,7 @@ } else if (strcasecmp(filtername, zlib.deflate) == 0) { /* RFC 1951 Deflate */ int level = Z_DEFAULT_COMPRESSION; - int windowBits = MAX_WBITS; + int windowBits = -MAX_WBITS; int memLevel = MAX_MEM_LEVEL; @@ -374,7 +374,7 @@ /* log-2 base of history window (9 - 15) */ SEPARATE_ZVAL(tmpzval); convert_to_long_ex(tmpzval); - if (Z_LVAL_PP(tmpzval) 9 || Z_LVAL_PP(tmpzval) MAX_WBITS) { + if (Z_LVAL_PP(tmpzval) -MAX_WBITS || Z_LVAL_PP(tmpzval) MAX_WBITS) { php_error_docref(NULL TSRMLS_CC, E_WARNING, Invalid parameter give for window size. (%ld), Z_LVAL_PP(tmpzval)); } else { windowBits = Z_LVAL_PP(tmpzval); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/zlib zlib_filter.c
pollita Tue Jul 20 01:08:53 2004 EDT Modified files: /php-src/ext/zlib zlib_filter.c Log: Make persistency safe http://cvs.php.net/diff.php/php-src/ext/zlib/zlib_filter.c?r1=1.2r2=1.3ty=u Index: php-src/ext/zlib/zlib_filter.c diff -u php-src/ext/zlib/zlib_filter.c:1.2 php-src/ext/zlib/zlib_filter.c:1.3 --- php-src/ext/zlib/zlib_filter.c:1.2 Sun Jul 18 09:23:40 2004 +++ php-src/ext/zlib/zlib_filter.c Tue Jul 20 01:08:52 2004 @@ -16,14 +16,16 @@ +--+ */ -/* $Id: zlib_filter.c,v 1.2 2004/07/18 13:23:40 wez Exp $ */ +/* $Id: zlib_filter.c,v 1.3 2004/07/20 05:08:52 pollita Exp $ */ #include php.h #include php_zlib.h /* {{{ data structure */ +/* Passed as opaque in malloc callbacks */ typedef struct _php_zlib_filter_data { + int persistent; z_stream strm; char *inbuf; size_t inbuf_len; @@ -37,12 +39,12 @@ static voidpf php_zlib_alloc(voidpf opaque, uInt items, uInt size) { - return (voidpf)safe_emalloc(items, size, 0); + return (voidpf)pemalloc(items * size, ((php_zlib_filter_data*)opaque)-persistent); } static void php_zlib_free(voidpf opaque, voidpf address) { - efree((void*)address); + pefree((void*)address, ((php_zlib_filter_data*)opaque)-persistent); } /* }}} */ @@ -140,9 +142,9 @@ if (thisfilter thisfilter-abstract) { php_zlib_filter_data *data = thisfilter-abstract; inflateEnd((data-strm)); - efree(data-inbuf); - efree(data-outbuf); - efree(data); + pefree(data-inbuf, data-persistent); + pefree(data-outbuf, data-persistent); + pefree(data, data-persistent); } } @@ -248,9 +250,9 @@ if (thisfilter thisfilter-abstract) { php_zlib_filter_data *data = thisfilter-abstract; deflateEnd((data-strm)); - efree(data-inbuf); - efree(data-outbuf); - efree(data); + pefree(data-inbuf, data-persistent); + pefree(data-outbuf, data-persistent); + pefree(data, data-persistent); } } @@ -270,13 +272,8 @@ php_zlib_filter_data *data; int status; - if (persistent) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, this filter is not safe to use with a persistent stream); - return NULL; - } - /* Create this filter */ - data = ecalloc(1, sizeof(php_zlib_filter_data)); + data = pecalloc(1, sizeof(php_zlib_filter_data), persistent); /* Circular reference */ data-strm.opaque = (voidpf) data; @@ -284,9 +281,9 @@ data-strm.zalloc = (alloc_func) php_zlib_alloc; data-strm.zfree = (free_func) php_zlib_free; data-strm.avail_out = data-outbuf_len = data-inbuf_len = 2048; - data-strm.next_in = data-inbuf = (Bytef *) emalloc(data-inbuf_len); + data-strm.next_in = data-inbuf = (Bytef *) pemalloc(data-inbuf_len, persistent); data-strm.avail_in = 0; - data-strm.next_out = data-outbuf = (Bytef *) emalloc(data-outbuf_len); + data-strm.next_out = data-outbuf = (Bytef *) pemalloc(data-outbuf_len, persistent); data-strm.data_type = Z_ASCII; if (strcasecmp(filtername, zlib.inflate) == 0) { @@ -384,9 +381,9 @@ if (status != Z_OK) { /* Unspecified (probably strm) error, let stream-filter error do its own whining */ - efree(data-strm.next_in); - efree(data-strm.next_out); - efree(data); + pefree(data-strm.next_in, persistent); + pefree(data-strm.next_out, persistent); + pefree(data, persistent); return NULL; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php