cvs: php4 /ext/bz2 bz2.c

From: Date: Fri, 16 Mar 2001 04:23:58 +0000
Subject: cvs: php4 /ext/bz2 bz2.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4597@lists.php.net to get a copy of this message
sterling Thu Mar 15 20:23:58 2001 EDT Modified files: /php4/ext/bz2 bz2.c Log: Slightly modified fix from jeremy brand <jeremy@nirvani.net>. he correctly pointed out that allocating the buffer to a little more than need (exact formula is in the code) will save the need to keep retrying the compression. Index: php4/ext/bz2/bz2.c diff -u php4/ext/bz2/bz2.c:1.11 php4/ext/bz2/bz2.c:1.12 --- php4/ext/bz2/bz2.c:1.11 Thu Mar 15 17:21:24 2001 +++ php4/ext/bz2/bz2.c Thu Mar 15 20:23:58 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: bz2.c,v 1.11 2001/03/16 01:21:24 sniper Exp $ */ +/* $Id: bz2.c,v 1.12 2001/03/16 04:23:58 sterling Exp $ */ #include "php.h" @@ -276,9 +276,11 @@ convert_to_string_ex(source); /* Assign them to easy to use variables, dest_len is initially the length of the data - because, the compression buffer should be smaller than the size of the data passed */ + + .01 x length of data + 600 which is the largest size the results of the compression + could possibly be, at least that's what the libbz2 docs say (thanks to jeremy@nirvani.net + for pointing this out). */ source_len = Z_STRLEN_PP(source); - dest_len = Z_STRLEN_PP(source); + dest_len = Z_STRLEN_PP(source) + (0.01 * Z_STRLEN_PP(source)) + 600; /* Allocate the destination buffer */ dest = emalloc(dest_len + 1); @@ -293,20 +295,8 @@ convert_to_long_ex(zwork_factor); work_factor = Z_LVAL_PP(zwork_factor); } - - /* Compression loop */ - do { - /* Handle the (re)allocation of the buffer */ - size = dest_len * iter; - if (iter > 1) { - dest = erealloc(dest, size); - } - iter++; - - /* Try and perform the compression */ - error = BZ2_bzBuffToBuffCompress(dest, &size, Z_STRVAL_PP(source), source_len, block_size, 0, work_factor); - } while (error == BZ_OUTBUFF_FULL); - + + error = BZ2_bzBuffToBuffCompress(dest, &size, Z_STRVAL_PP(source), source_len, block_size, 0, work_factor); if (error != BZ_OK) { RETVAL_LONG(error); } else {

« previous php.cvs (#4597) next »