Rebuild after ditching GNUisms in GNUMakefile.in
[privoxy.git] / cgi.c
diff --git a/cgi.c b/cgi.c
index a55805b..de80ead 100644 (file)
--- a/cgi.c
+++ b/cgi.c
@@ -1,4 +1,4 @@
-const char cgi_rcs[] = "$Id: cgi.c,v 1.140 2011/07/08 13:28:11 fabiankeil Exp $";
+const char cgi_rcs[] = "$Id: cgi.c,v 1.142 2011/08/17 10:25:43 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/cgi.c,v $
@@ -1507,19 +1507,11 @@ static void get_locale_time(char *buf, size_t buffer_size)
 char *compress_buffer(char *buffer, size_t *buffer_length, int compression_level)
 {
    char *compressed_buffer;
-   size_t new_length;
+   uLongf new_length;
    assert(-1 <= compression_level && compression_level <= 9);
 
-   /*
-    * If the compression level is 0 or if the entropy
-    * is high, the "compressing" data will take more
-    * room then the uncompressed data due to the zlib
-    * overhead.
-    *
-    * XXX: The overhead isn't constant and 30 bytes
-    *      may not be enough for everybody
-    */
-   new_length = *buffer_length + 30;
+   /* Let zlib figure out the maximum length of the compressed data */
+   new_length = compressBound((uLongf)*buffer_length);
 
    compressed_buffer = malloc(new_length);
    if (NULL == compressed_buffer)
@@ -1542,7 +1534,7 @@ char *compress_buffer(char *buffer, size_t *buffer_length, int compression_level
       "Compressed content from %d to %d bytes. Compression level: %d",
       *buffer_length, new_length, compression_level);
 
-   *buffer_length = new_length;
+   *buffer_length = (size_t)new_length;
 
    return compressed_buffer;