531 assert(minlen <= maxlen); // don't talk nonsense |
531 assert(minlen <= maxlen); // don't talk nonsense |
532 jlong numread = 0; |
532 jlong numread = 0; |
533 char* bufptr = (char*) buf; |
533 char* bufptr = (char*) buf; |
534 char* inbuf = u->gzin->inbuf; |
534 char* inbuf = u->gzin->inbuf; |
535 size_t inbuflen = sizeof(u->gzin->inbuf); |
535 size_t inbuflen = sizeof(u->gzin->inbuf); |
536 // capture return values from fread to avoid -Werror=unused-result issues |
|
537 size_t ret = 0; |
|
538 unpacker::read_input_fn_t read_gzin_fn = |
536 unpacker::read_input_fn_t read_gzin_fn = |
539 (unpacker::read_input_fn_t) u->gzin->read_input_fn; |
537 (unpacker::read_input_fn_t) u->gzin->read_input_fn; |
540 z_stream& zs = *(z_stream*) u->gzin->zstream; |
538 z_stream& zs = *(z_stream*) u->gzin->zstream; |
541 while (numread < minlen) { |
539 while (numread < minlen) { |
542 int readlen = (1 << 16); // pretty arbitrary |
540 int readlen = (1 << 16); // pretty arbitrary |
579 if (u->gzin->gzcrc != 0) { |
577 if (u->gzin->gzcrc != 0) { |
580 // Read the CRC information from the gzip container |
578 // Read the CRC information from the gzip container |
581 fseek(u->infileptr, -TRAILER_LEN, SEEK_END); |
579 fseek(u->infileptr, -TRAILER_LEN, SEEK_END); |
582 uint filecrc; |
580 uint filecrc; |
583 uint filelen; |
581 uint filelen; |
584 ret = fread(&filecrc, sizeof(filecrc), 1, u->infileptr); |
582 fread(&filecrc, sizeof(filecrc), 1, u->infileptr); |
585 ret = fread(&filelen, sizeof(filelen), 1, u->infileptr); |
583 fread(&filelen, sizeof(filelen), 1, u->infileptr); |
586 filecrc = SWAP_INT(filecrc); |
584 filecrc = SWAP_INT(filecrc); |
587 filelen = SWAP_INT(filelen); |
585 filelen = SWAP_INT(filelen); |
588 if (u->gzin->gzcrc != filecrc || |
586 if (u->gzin->gzcrc != filecrc || |
589 // rfc1952; ISIZE is the input size modulo 2^32 |
587 // rfc1952; ISIZE is the input size modulo 2^32 |
590 u->gzin->gzlen != (filelen & 0xffffffff)) { // CRC error |
588 u->gzin->gzlen != (filelen & 0xffffffff)) { // CRC error |