mirror of
https://github.com/danbulant/pngjs
synced 2026-06-20 15:01:33 +00:00
Do not process if checksum errors
This commit is contained in:
parent
b89ef0384f
commit
2914659815
2 changed files with 20 additions and 8 deletions
|
|
@ -34,7 +34,7 @@ var ParserAsync = module.exports = function(options) {
|
|||
|
||||
this._parser = new Parser(options, {
|
||||
read: this.read.bind(this),
|
||||
error: this.emit.bind(this, "error"),
|
||||
error: this._handleError.bind(this),
|
||||
metadata: this.emit.bind(this, "metadata"),
|
||||
gamma: this.emit.bind(this, "gamma"),
|
||||
finished: this._finished.bind(this),
|
||||
|
|
@ -44,13 +44,14 @@ var ParserAsync = module.exports = function(options) {
|
|||
this._options = options;
|
||||
this.writable = true;
|
||||
|
||||
this.on('error', this._handleError.bind(this));
|
||||
this._parser.start();
|
||||
};
|
||||
util.inherits(ParserAsync, ChunkStream);
|
||||
|
||||
|
||||
ParserAsync.prototype._handleError = function() {
|
||||
ParserAsync.prototype._handleError = function(err) {
|
||||
|
||||
this.emit('error', err);
|
||||
|
||||
this.writable = false;
|
||||
|
||||
|
|
@ -59,6 +60,8 @@ ParserAsync.prototype._handleError = function() {
|
|||
if (this._inflate && this._inflate.destroy) {
|
||||
this._inflate.destroy();
|
||||
}
|
||||
|
||||
this.errord = true;
|
||||
};
|
||||
|
||||
ParserAsync.prototype._inflateData = function(data) {
|
||||
|
|
@ -89,6 +92,10 @@ ParserAsync.prototype._createData = function(width, height, bpp, depth, interlac
|
|||
};
|
||||
|
||||
ParserAsync.prototype._finished = function(data) {
|
||||
if (this.errord) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this._inflate) {
|
||||
this.emit('error', 'No Inflate block');
|
||||
} else {
|
||||
|
|
@ -100,6 +107,10 @@ ParserAsync.prototype._finished = function(data) {
|
|||
|
||||
ParserAsync.prototype._complete = function(data, width, height) {
|
||||
|
||||
if (this.errord) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
data = bitmapper.dataToBitMap(data, width, height,
|
||||
this._bpp,
|
||||
|
|
@ -109,7 +120,8 @@ ParserAsync.prototype._complete = function(data, width, height) {
|
|||
data = this._parser.reverseFiltered(data, this._depth, width, height);
|
||||
}
|
||||
catch(e) {
|
||||
this.emit('error', e);
|
||||
this._handleError();
|
||||
return;
|
||||
}
|
||||
|
||||
this.emit('parsed', data);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ module.exports = function(done) {
|
|||
var png = PNG.sync.read(data);
|
||||
} catch (e) {
|
||||
if (!expectedError) {
|
||||
console.log("Unexpected error parsing.." + file);
|
||||
console.log("Sync: Unexpected error parsing.." + file);
|
||||
console.log(e);
|
||||
console.log(e.stack);
|
||||
}
|
||||
|
|
@ -45,7 +45,7 @@ module.exports = function(done) {
|
|||
|
||||
if (!syncError) {
|
||||
if (expectedError) {
|
||||
console.log("Error expected, parsed fine ..", file);
|
||||
console.log("Sync: Error expected, parsed fine ..", file);
|
||||
complete();
|
||||
} else {
|
||||
|
||||
|
|
@ -66,14 +66,14 @@ module.exports = function(done) {
|
|||
.pipe(new PNG())
|
||||
.on('error', function (err) {
|
||||
if (!expectedError) {
|
||||
console.log("Error reading " + file, err);
|
||||
console.log("Async: Unexpected error parsing.." + file, err);
|
||||
}
|
||||
complete();
|
||||
})
|
||||
.on('parsed', function () {
|
||||
|
||||
if (expectedError) {
|
||||
console.log("Error expected, parsed fine", file);
|
||||
console.log("Async: Error expected, parsed fine ..", file);
|
||||
}
|
||||
//this.adjustGamma();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue