summaryrefslogtreecommitdiff
path: root/Build/source/libs/xpdf/xpdf-src/xpdf/Stream.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/xpdf/xpdf-src/xpdf/Stream.cc')
-rw-r--r--Build/source/libs/xpdf/xpdf-src/xpdf/Stream.cc24
1 files changed, 7 insertions, 17 deletions
diff --git a/Build/source/libs/xpdf/xpdf-src/xpdf/Stream.cc b/Build/source/libs/xpdf/xpdf-src/xpdf/Stream.cc
index 8387e55d0b0..383ac5478ff 100644
--- a/Build/source/libs/xpdf/xpdf-src/xpdf/Stream.cc
+++ b/Build/source/libs/xpdf/xpdf-src/xpdf/Stream.cc
@@ -8,6 +8,10 @@
#include <aconf.h>
+#ifdef USE_GCC_PRAGMAS
+#pragma implementation
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
@@ -2669,7 +2673,6 @@ DCTStream::DCTStream(Stream *strA, GBool colorXformA):
frameBuf[i] = NULL;
}
rowBuf = NULL;
- memset(quantTables, 0, sizeof(quantTables));
memset(dcHuffTables, 0, sizeof(dcHuffTables));
memset(acHuffTables, 0, sizeof(acHuffTables));
@@ -2891,7 +2894,7 @@ void DCTStream::prepare() {
bufWidth = ((width + mcuWidth - 1) / mcuWidth) * mcuWidth;
bufHeight = ((height + mcuHeight - 1) / mcuHeight) * mcuHeight;
if (bufWidth <= 0 || bufHeight <= 0 ||
- bufWidth > INT_MAX / bufHeight / (int)sizeof(int)) {
+ bufWidth > INT_MAX / bufWidth / (int)sizeof(int)) {
error(errSyntaxError, getPos(), "Invalid image size in DCT stream");
y = height;
prepared = gTrue;
@@ -2939,13 +2942,7 @@ void DCTStream::prepare() {
// allocate a buffer for one row of MCUs
bufWidth = ((width + mcuWidth - 1) / mcuWidth) * mcuWidth;
- if (bufWidth <= 0 || bufWidth > INT_MAX / numComps / mcuHeight) {
- error(errSyntaxError, getPos(), "Invalid image size in DCT stream");
- y = height;
- prepared = gTrue;
- return;
- }
- rowBuf = (Guchar *)gmallocn(bufWidth, numComps * mcuHeight);
+ rowBuf = (Guchar *)gmallocn(numComps * mcuHeight, bufWidth);
rowBufPtr = rowBufEnd = rowBuf;
// initialize counters
@@ -3851,12 +3848,11 @@ int DCTStream::readBit() {
}
GBool DCTStream::readHeader(GBool frame) {
- GBool haveSOF, doScan;
+ GBool doScan;
int n, i;
int c = 0;
// read headers
- haveSOF = gFalse;
doScan = gFalse;
while (!doScan) {
c = readMarker();
@@ -3871,7 +3867,6 @@ GBool DCTStream::readHeader(GBool frame) {
if (!readBaselineSOF()) {
return gFalse;
}
- haveSOF = gTrue;
break;
case 0xc2: // SOF2 (progressive)
if (!frame) {
@@ -3882,7 +3877,6 @@ GBool DCTStream::readHeader(GBool frame) {
if (!readProgressiveSOF()) {
return gFalse;
}
- haveSOF = gTrue;
break;
case 0xc4: // DHT
if (!readHuffmanTables()) {
@@ -3899,10 +3893,6 @@ GBool DCTStream::readHeader(GBool frame) {
case 0xd9: // EOI
return gFalse;
case 0xda: // SOS
- if (frame && !haveSOF) {
- error(errSyntaxError, getPos(), "Missing SOF in DCT stream");
- return gFalse;
- }
if (!readScanInfo()) {
return gFalse;
}