diff --git a/lib/sax.js b/lib/sax.js
index 826bb6c..857f1d4 100644
--- a/lib/sax.js
+++ b/lib/sax.js
@@ -1483,9 +1483,11 @@
}
if (c === ';') {
- parser[buffer] += parseEntity(parser)
+ // parser[buffer] += parseEntity(parser)
+ var parsedEntity = parseEntity(parser)
parser.entity = ''
parser.state = returnState
+ parser.write(parsedEntity)
} else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {
parser.entity += c
} else {
diff --git a/test/entity-elem.js b/test/entity-elem.js
new file mode 100644
index 0000000..1fa83c2
--- /dev/null
+++ b/test/entity-elem.js
@@ -0,0 +1,18 @@
+var sax = require('../');
+sax.ENTITIES.attr = "1";
+sax.ENTITIES.text = "2";
+sax.ENTITIES.elem = '';
+require(__dirname).test({
+ xml: `&text;&elem;`,
+ expect: [
+ ["opentagstart", {name: "A", attributes: {}}],
+ ["attribute", {name: 'ATTR', value: "1.2"}],
+ ["opentag", {name: "A", attributes: {ATTR: "1.2"}, isSelfClosing: false}],
+ ["text", "2"],
+ ["opentagstart", {name: "B", attributes: {}}],
+ ["attribute", {name: 'ATTR', value: "1.3"}],
+ ["opentag", {name: "B", attributes: {ATTR: "1.3"}, isSelfClosing: true}],
+ ["closetag", "B"],
+ ["closetag", "A"]
+ ]
+});