From 899b8073d6a0ed0a3de30193fd6e145f0aa931d0 Mon Sep 17 00:00:00 2001 From: markt Date: Thu, 29 Nov 2007 22:27:23 +0000 Subject: [PATCH] Fix bug 43757. Rather than use string matching to work out the line in the JSP with the error, use the SMAP info and the knowledge that for a scriptlet there is a one to one line mapping. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@599605 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/jasper/compiler/ErrorDispatcher.java | 27 ++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/java/org/apache/jasper/compiler/ErrorDispatcher.java b/java/org/apache/jasper/compiler/ErrorDispatcher.java index 970b13cc9..b4872c4d3 100644 --- a/java/org/apache/jasper/compiler/ErrorDispatcher.java +++ b/java/org/apache/jasper/compiler/ErrorDispatcher.java @@ -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 -- 2.11.0