1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 08:08:50 -05:00

Allocate the decompression buffer for the --manual option on the heap

instead of the stack.
This commit is contained in:
Dan Fandrich 2008-04-21 23:17:20 +00:00
parent 5825cf9457
commit 7076505c24

View File

@ -120,6 +120,7 @@ HEAD
;
if($c) {
print <<HEAD
#include <stdlib.h>
#include <zlib.h>
static const unsigned char hugehelpgz[] = {
/* This mumbo-jumbo is the huge help text compressed with gzip.
@ -144,10 +145,11 @@ HEAD
print "\n};\n";
print <<EOF
#define BUF_SIZE 0x10000
/* Decompress and send to stdout a gzip-compressed buffer */
void hugehelp(void)
{
unsigned char buf[0x10000];
unsigned char* buf;
int status,headerlen;
z_stream z;
@ -165,17 +167,21 @@ void hugehelp(void)
if (inflateInit2(&z, -MAX_WBITS) != Z_OK)
return;
while(1) {
z.avail_out = (int)sizeof(buf);
z.next_out = buf;
status = inflate(&z, Z_SYNC_FLUSH);
if (status == Z_OK || status == Z_STREAM_END) {
fwrite(buf, sizeof(buf) - z.avail_out, 1, stdout);
if (status == Z_STREAM_END)
break;
buf = malloc(BUF_SIZE);
if (buf) {
while(1) {
z.avail_out = BUF_SIZE;
z.next_out = buf;
status = inflate(&z, Z_SYNC_FLUSH);
if (status == Z_OK || status == Z_STREAM_END) {
fwrite(buf, BUF_SIZE - z.avail_out, 1, stdout);
if (status == Z_STREAM_END)
break;
}
else
break; /* Error */
}
else
break; /* Error */
free(buf);
}
inflateEnd(&z);
}