Fix bug 43757. Rather than use string matching to work out the line in the JSP with...
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 29 Nov 2007 22:27:23 +0000 (22:27 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 29 Nov 2007 22:27:23 +0000 (22:27 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@599605 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/jasper/compiler/ErrorDispatcher.java

index 970b13c..b4872c4 100644 (file)
@@ -527,13 +527,26 @@ public class ErrorDispatcher {
         page.visit(errVisitor);
         Node errNode = errVisitor.getJspSourceNode();
         if ((errNode != null) && (errNode.getStart() != null)) {
-            javacError = new JavacErrorDetail(
-                    fname,
-                    lineNum,
-                    errNode.getStart().getFile(),
-                    errNode.getStart().getLineNumber(),
-                    errMsgBuf,
-                    ctxt);
+            // If this is a scriplet node then there is a one to one mapping
+            // between JSP lines and Java lines
+            if (errVisitor.getJspSourceNode() instanceof Node.Scriptlet) {
+                javacError = new JavacErrorDetail(
+                        fname,
+                        lineNum,
+                        errNode.getStart().getFile(),
+                        errNode.getStart().getLineNumber() + lineNum -
+                            errVisitor.getJspSourceNode().getBeginJavaLine(),
+                        errMsgBuf,
+                        ctxt);
+            } else {
+                javacError = new JavacErrorDetail(
+                        fname,
+                        lineNum,
+                        errNode.getStart().getFile(),
+                        errNode.getStart().getLineNumber(),
+                        errMsgBuf,
+                        ctxt);
+            }
         } else {
             /*
              * javac error line number cannot be mapped to JSP page