Fixes a bug in StackTraceDeobfuscator where line numbers from the symbol map were being used in resymbolization only if the line number from StackTraceElement is 0, where it should be used if the line number is -1, per StackTraceElement's javadoc: http://download.oracle.com/javase/6/docs/api/java/lang/StackTraceElement.html
Review at http://gwt-code-reviews.appspot.com/1457801
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10297 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java b/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
index 7379425..472afaf 100644
--- a/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
+++ b/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
@@ -53,6 +53,10 @@
private static Pattern JsniRefPattern =
Pattern.compile("@?([^:]+)::([^(]+)(\\((.*)\\))?");
+ // The javadoc for StackTraceElement.getLineNumber() says it returns -1 when
+ // the line number is unavailable
+ private static final int LINE_NUMBER_UNKNOWN = -1;
+
private File symbolMapsDirectory;
private Map<String, SymbolMap> symbolMaps =
@@ -136,11 +140,12 @@
int lineNumber = ste.getLineNumber();
/*
- * When lineNumber is zero, either because compiler.stackMode is not
- * emulated or compiler.emulatedStack.recordLineNumbers is false, use
- * the method declaration line number from the symbol map.
+ * When lineNumber is LINE_NUMBER_UNKNOWN, either because
+ * compiler.stackMode is not emulated or
+ * compiler.emulatedStack.recordLineNumbers is false, use the method
+ * declaration line number from the symbol map.
*/
- if (lineNumber == 0) {
+ if (lineNumber == LINE_NUMBER_UNKNOWN) {
lineNumber = Integer.parseInt(parts[4]);
}