diff options
| -rw-r--r-- | lib/content_encoding.c | 20 | ||||
| -rw-r--r-- | src/mkhelp.pl | 17 | 
2 files changed, 36 insertions, 1 deletions
diff --git a/lib/content_encoding.c b/lib/content_encoding.c index 84d76f4b9..3276ef988 100644 --- a/lib/content_encoding.c +++ b/lib/content_encoding.c @@ -49,6 +49,21 @@  #define COMMENT      0x10 /* bit 4 set: file comment present */  #define RESERVED     0xE0 /* bits 5..7: reserved */ +static voidpf +zalloc_cb(voidpf opaque, unsigned int items, unsigned int size) +{ +  (void) opaque; +  /* not a typo, keep it calloc() */ +  return (voidpf) calloc(items, size); +} + +static void +zfree_cb(voidpf opaque, voidpf ptr) +{ +  (void) opaque; +  free(ptr); +} +  static CURLcode  process_zlib_error(struct connectdata *conn, z_stream *z)  { @@ -159,6 +174,9 @@ Curl_unencode_deflate_write(struct connectdata *conn,    /* Initialize zlib? */    if(k->zlib_init == ZLIB_UNINIT) {      memset(z, 0, sizeof(z_stream)); +    z->zalloc = (alloc_func)zalloc_cb; +    z->zfree = (free_func)zfree_cb; +      if(inflateInit(z) != Z_OK)        return process_zlib_error(conn, z);      k->zlib_init = ZLIB_INIT; @@ -266,6 +284,8 @@ Curl_unencode_gzip_write(struct connectdata *conn,    /* Initialize zlib? */    if(k->zlib_init == ZLIB_UNINIT) {      memset(z, 0, sizeof(z_stream)); +    z->zalloc = (alloc_func)zalloc_cb; +    z->zfree = (free_func)zfree_cb;      if(strcmp(zlibVersion(), "1.2.0.4") >= 0) {        /* zlib ver. >= 1.2.0.4 supports transparent gzip decompressing */ diff --git a/src/mkhelp.pl b/src/mkhelp.pl index e9de8429d..d09d6c508 100644 --- a/src/mkhelp.pl +++ b/src/mkhelp.pl @@ -133,7 +133,6 @@ print <<HEAD   * NEVER EVER edit this manually, fix the mkhelp.pl script instead!   * Generation time: $now   */ -#include "setup.h"  #ifdef USE_MANUAL  #include "hugehelp.h"  HEAD @@ -141,6 +140,9 @@ HEAD  if($c) {      print <<HEAD  #include <zlib.h> +#if defined(CURLDEBUG) && defined(CURLTOOLDEBUG) +#include "memdebug.h" +#endif  static const unsigned char hugehelpgz[] = {    /* This mumbo-jumbo is the huge help text compressed with gzip.       Thanks to this operation, the size of this data shrunk from $gzip @@ -165,6 +167,17 @@ HEAD      print <<EOF  #define BUF_SIZE 0x10000 +static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size) +{ +  (void) opaque; +  /* not a typo, keep it calloc() */ +  return (voidpf) calloc(items, size); +} +static void zfree_func(voidpf opaque, voidpf ptr) +{ +  (void) opaque; +  free(ptr); +}  /* Decompress and send to stdout a gzip-compressed buffer */  void hugehelp(void)  { @@ -178,6 +191,8 @@ void hugehelp(void)    headerlen = 10;    memset(&z, 0, sizeof(z_stream)); +  z.zalloc = (alloc_func)zalloc_func; +  z.zfree = (free_func)zfree_func;    z.avail_in = (unsigned int)(sizeof(hugehelpgz) - headerlen);    z.next_in = (unsigned char *)hugehelpgz + headerlen;  | 
