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:
parent
5825cf9457
commit
7076505c24
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user