Browse Source

Merge pull request #7623 from Snuffleupagus/jpx-error

Change `src/core/jpx.js` to use the `error` utility function instead of using `throw new Error`
Tim van der Meij 9 years ago committed by GitHub
parent
commit
03588ccbf7
  1. 39
      src/core/jpx.js

39
src/core/jpx.js

@ -29,10 +29,11 @@
}(this, function (exports, sharedUtil, coreArithmeticDecoder) { }(this, function (exports, sharedUtil, coreArithmeticDecoder) {
var info = sharedUtil.info; var info = sharedUtil.info;
var warn = sharedUtil.warn;
var error = sharedUtil.error;
var log2 = sharedUtil.log2; var log2 = sharedUtil.log2;
var readUint16 = sharedUtil.readUint16; var readUint16 = sharedUtil.readUint16;
var readUint32 = sharedUtil.readUint32; var readUint32 = sharedUtil.readUint32;
var warn = sharedUtil.warn;
var ArithmeticDecoder = coreArithmeticDecoder.ArithmeticDecoder; var ArithmeticDecoder = coreArithmeticDecoder.ArithmeticDecoder;
var JpxImage = (function JpxImageClosure() { var JpxImage = (function JpxImageClosure() {
@ -74,7 +75,7 @@ var JpxImage = (function JpxImageClosure() {
lbox = length - position + headerSize; lbox = length - position + headerSize;
} }
if (lbox < headerSize) { if (lbox < headerSize) {
throw new Error('JPX Error: Invalid box field size'); error('JPX Error: Invalid box field size');
} }
var dataLength = lbox - headerSize; var dataLength = lbox - headerSize;
var jumpDataLength = true; var jumpDataLength = true;
@ -152,12 +153,12 @@ var JpxImage = (function JpxImageClosure() {
return; return;
} }
} }
throw new Error('JPX Error: No size marker found in JPX stream'); error('JPX Error: No size marker found in JPX stream');
}, },
parseCodestream: function JpxImage_parseCodestream(data, start, end) { parseCodestream: function JpxImage_parseCodestream(data, start, end) {
var context = {}; var context = {};
try {
var doNotRecover = false; var doNotRecover = false;
try {
var position = start; var position = start;
while (position + 1 < end) { while (position + 1 < end) {
var code = readUint16(data, position); var code = readUint16(data, position);
@ -220,7 +221,7 @@ var JpxImage = (function JpxImageClosure() {
scalarExpounded = true; scalarExpounded = true;
break; break;
default: default:
throw new Error('JPX Error: Invalid SQcd value ' + sqcd); throw new Error('Invalid SQcd value ' + sqcd);
} }
qcd.noQuantization = (spqcdSize === 8); qcd.noQuantization = (spqcdSize === 8);
qcd.scalarExpounded = scalarExpounded; qcd.scalarExpounded = scalarExpounded;
@ -272,7 +273,7 @@ var JpxImage = (function JpxImageClosure() {
scalarExpounded = true; scalarExpounded = true;
break; break;
default: default:
throw new Error('JPX Error: Invalid SQcd value ' + sqcd); throw new Error('Invalid SQcd value ' + sqcd);
} }
qcc.noQuantization = (spqcdSize === 8); qcc.noQuantization = (spqcdSize === 8);
qcc.scalarExpounded = scalarExpounded; qcc.scalarExpounded = scalarExpounded;
@ -350,7 +351,7 @@ var JpxImage = (function JpxImageClosure() {
} }
if (unsupported.length > 0) { if (unsupported.length > 0) {
doNotRecover = true; doNotRecover = true;
throw new Error('JPX Error: Unsupported COD options (' + throw new Error('Unsupported COD options (' +
unsupported.join(', ') + ')'); unsupported.join(', ') + ')');
} }
if (context.mainHeader) { if (context.mainHeader) {
@ -398,19 +399,18 @@ var JpxImage = (function JpxImageClosure() {
// skipping content // skipping content
break; break;
case 0xFF53: // Coding style component (COC) case 0xFF53: // Coding style component (COC)
throw new Error('JPX Error: Codestream code 0xFF53 (COC) is ' + throw new Error('Codestream code 0xFF53 (COC) is ' +
'not implemented'); 'not implemented');
default: default:
throw new Error('JPX Error: Unknown codestream code: ' + throw new Error('Unknown codestream code: ' + code.toString(16));
code.toString(16));
} }
position += length; position += length;
} }
} catch (e) { } catch (e) {
if (doNotRecover || this.failOnCorruptedImage) { if (doNotRecover || this.failOnCorruptedImage) {
throw e; error('JPX Error: ' + e.message);
} else { } else {
warn('Trying to recover from ' + e.message); warn('JPX: Trying to recover from: ' + e.message);
} }
} }
this.tiles = transformComponents(context); this.tiles = transformComponents(context);
@ -660,7 +660,7 @@ var JpxImage = (function JpxImageClosure() {
} }
r = 0; r = 0;
} }
throw new Error('JPX Error: Out of packets'); error('JPX Error: Out of packets');
}; };
} }
function ResolutionLayerComponentPositionIterator(context) { function ResolutionLayerComponentPositionIterator(context) {
@ -700,7 +700,7 @@ var JpxImage = (function JpxImageClosure() {
} }
l = 0; l = 0;
} }
throw new Error('JPX Error: Out of packets'); error('JPX Error: Out of packets');
}; };
} }
function ResolutionPositionComponentLayerIterator(context) { function ResolutionPositionComponentLayerIterator(context) {
@ -759,7 +759,7 @@ var JpxImage = (function JpxImageClosure() {
} }
p = 0; p = 0;
} }
throw new Error('JPX Error: Out of packets'); error('JPX Error: Out of packets');
}; };
} }
function PositionComponentResolutionLayerIterator(context) { function PositionComponentResolutionLayerIterator(context) {
@ -806,7 +806,7 @@ var JpxImage = (function JpxImageClosure() {
} }
px = 0; px = 0;
} }
throw new Error('JPX Error: Out of packets'); error('JPX Error: Out of packets');
}; };
} }
function ComponentPositionResolutionLayerIterator(context) { function ComponentPositionResolutionLayerIterator(context) {
@ -852,7 +852,7 @@ var JpxImage = (function JpxImageClosure() {
} }
py = 0; py = 0;
} }
throw new Error('JPX Error: Out of packets'); error('JPX Error: Out of packets');
}; };
} }
function getPrecinctIndexIfExist( function getPrecinctIndexIfExist(
@ -1032,8 +1032,7 @@ var JpxImage = (function JpxImageClosure() {
new ComponentPositionResolutionLayerIterator(context); new ComponentPositionResolutionLayerIterator(context);
break; break;
default: default:
throw new Error('JPX Error: Unsupported progression order ' + error('JPX Error: Unsupported progression order ' + progressionOrder);
progressionOrder);
} }
} }
function parseTilePackets(context, data, offset, dataLength) { function parseTilePackets(context, data, offset, dataLength) {
@ -1970,7 +1969,7 @@ var JpxImage = (function JpxImageClosure() {
(decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) | (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |
decoder.readBit(contexts, UNIFORM_CONTEXT); decoder.readBit(contexts, UNIFORM_CONTEXT);
if (symbol !== 0xA) { if (symbol !== 0xA) {
throw new Error('JPX Error: Invalid segmentation symbol'); error('JPX Error: Invalid segmentation symbol');
} }
} }
}; };

Loading…
Cancel
Save