From ba5efe97fdfdeea4a61ec8428da0a230abddd9f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=AC=E3=82=AA=E3=83=8A=E3=83=AB=E3=83=89?= Date: Thu, 19 Jan 2023 02:24:25 +0100 Subject: [PATCH 1/2] Edit to handle errors --- lib/xml-stream.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/xml-stream.js b/lib/xml-stream.js index 7121ffd..b1c1a1b 100644 --- a/lib/xml-stream.js +++ b/lib/xml-stream.js @@ -521,7 +521,7 @@ function parse() { data = self._encoder.convert(data); } if (!xml.parse(data, false)) { - self.emit('error', new Error(xml.getError()+" in line "+xml.getCurrentLineNumber())); + throw new Error(xml.getError()+" in line "+xml.getCurrentLineNumber()); } } @@ -549,7 +549,8 @@ function parse() { // End parsing on stream EOF and emit an *end* event ourselves. this._stream.on('end', function() { if (!xml.parse('', true)) { - self.emit('error', new Error(xml.getError()+" in line "+xml.getCurrentLineNumber())); + self.emit('end'); + throw new Error(xml.getError()+" in line "+xml.getCurrentLineNumber()); } self.emit('end'); }); From 77e6fd11e85d964a66fc631dea510e2f35daf573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=AC=E3=82=AA=E3=83=8A=E3=83=AB=E3=83=89?= Date: Thu, 19 Jan 2023 03:14:26 +0100 Subject: [PATCH 2/2] Corrected error handling --- lib/xml-stream.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/xml-stream.js b/lib/xml-stream.js index b1c1a1b..62a7991 100644 --- a/lib/xml-stream.js +++ b/lib/xml-stream.js @@ -110,6 +110,11 @@ XmlStream.prototype = Object.create(events.EventEmitter.prototype, { // * `ancestor descendant` // * `parent > child` XmlStream.prototype.on = function(eventName, listener) { + if (eventName === 'error') { + XmlStream.super_.prototype.on.call(this, eventName, listener); + return this; + } + var event = parseEvent(eventName); if (event !== null) { // If we're dealing with a selector event, @@ -521,7 +526,7 @@ function parse() { data = self._encoder.convert(data); } if (!xml.parse(data, false)) { - throw new Error(xml.getError()+" in line "+xml.getCurrentLineNumber()); + self.emit('error', new Error(xml.getError()+" in line "+xml.getCurrentLineNumber())); } } @@ -549,8 +554,7 @@ function parse() { // End parsing on stream EOF and emit an *end* event ourselves. this._stream.on('end', function() { if (!xml.parse('', true)) { - self.emit('end'); - throw new Error(xml.getError()+" in line "+xml.getCurrentLineNumber()); + self.emit('error', new Error(xml.getError()+" in line "+xml.getCurrentLineNumber())); } self.emit('end'); });