From: Markus Koschany <apo@debian.org>
Date: Sun, 3 Jan 2016 02:48:46 +0100
Subject: netbeans

This patch is Netbeans specific and must be applied in order to use the
html.parser module. The original .diff is located in html.parser/external.

Forwarded: not-needed
---
 src/nu/validator/htmlparser/impl/ErrorReportingTokenizer.java | 3 +--
 src/nu/validator/htmlparser/impl/Tokenizer.java               | 9 +++++++++
 src/nu/validator/htmlparser/impl/TreeBuilder.java             | 4 ++--
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/nu/validator/htmlparser/impl/ErrorReportingTokenizer.java b/src/nu/validator/htmlparser/impl/ErrorReportingTokenizer.java
index 2612c14..95bc174 100644
--- a/src/nu/validator/htmlparser/impl/ErrorReportingTokenizer.java
+++ b/src/nu/validator/htmlparser/impl/ErrorReportingTokenizer.java
@@ -336,8 +336,7 @@ public class ErrorReportingTokenizer extends Tokenizer {
     @Override protected int transition(int from, int to, boolean reconsume,
             int pos) throws SAXException {
         if (transitionHandler != null) {
-            transitionHandler.transition(from, to, reconsume,
-                    transitionBaseOffset + pos);
+            transitionHandler.transition(from, to, reconsume, currentBufferGlobalOffset + pos);
         }
         return to;
     }
diff --git a/src/nu/validator/htmlparser/impl/Tokenizer.java b/src/nu/validator/htmlparser/impl/Tokenizer.java
index d21ac9d..f676aca 100755
--- a/src/nu/validator/htmlparser/impl/Tokenizer.java
+++ b/src/nu/validator/htmlparser/impl/Tokenizer.java
@@ -513,6 +513,9 @@ public class Tokenizer implements Locator {
 
     // [NOCPP[
 
+    //holds the offset of the current buffer relative to the beginning of the input source
+    protected int currentBufferGlobalOffset;
+
     protected LocatorImpl ampersandLocation;
 
     public Tokenizer(TokenHandler tokenHandler, boolean newAttributesEachTime) {
@@ -1357,6 +1360,11 @@ public class Tokenizer implements Locator {
         } else {
             buffer.setStart(pos + 1);
         }
+
+        if(!buffer.hasMore()) {
+            currentBufferGlobalOffset += buffer.getEnd();
+        }
+
         return lastCR;
     }
 
@@ -6790,6 +6798,7 @@ public class Tokenizer implements Locator {
         }
         // ]NOCPP]
         resetToDataState();
+        currentBufferGlobalOffset = 0;
     }
 
     protected void errGarbageAfterLtSlash() throws SAXException {
diff --git a/src/nu/validator/htmlparser/impl/TreeBuilder.java b/src/nu/validator/htmlparser/impl/TreeBuilder.java
index 9bd40e1..2570728 100644
--- a/src/nu/validator/htmlparser/impl/TreeBuilder.java
+++ b/src/nu/validator/htmlparser/impl/TreeBuilder.java
@@ -1517,7 +1517,7 @@ public abstract class TreeBuilder<T> implements TokenHandler,
         end();
     }
 
-    public final void startTag(ElementName elementName,
+    public void startTag(ElementName elementName,
             HtmlAttributes attributes, boolean selfClosing) throws SAXException {
         flushCharacters();
 
@@ -3140,7 +3140,7 @@ public abstract class TreeBuilder<T> implements TokenHandler,
         }
     }
 
-    public final void endTag(ElementName elementName) throws SAXException {
+    public void endTag(ElementName elementName) throws SAXException {
         flushCharacters();
         needToDropLF = false;
         int eltPos;
