X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fnet%2Fsf%2Fopenrocket%2Flogging%2FTraceException.java;h=f3fc1714ae9c0e05246cabd4458a377dbeb1a834;hb=d50821c2be7fff2aa18203bbbc0bf4e23028e853;hp=01029d7d34e06493b316b6f4c1e7ff5973ca4912;hpb=7783fc65bb6ae4d1f062f4db9e4b1f8dfb526f3d;p=debian%2Fopenrocket diff --git a/src/net/sf/openrocket/logging/TraceException.java b/src/net/sf/openrocket/logging/TraceException.java index 01029d7d..f3fc1714 100644 --- a/src/net/sf/openrocket/logging/TraceException.java +++ b/src/net/sf/openrocket/logging/TraceException.java @@ -95,31 +95,33 @@ public class TraceException extends Exception { StackTraceElement[] elements = this.getStackTrace(); StringBuilder sb = new StringBuilder(); - if (minLevel < elements.length) { - - sb.append("("); - sb.append(toString(elements[minLevel])); - for (int i = minLevel + 1; i <= maxLevel; i++) { - if (i < elements.length) { - sb.append(' ').append(toString(elements[i])); - } - } - sb.append(')'); - - } else if (elements.length == 0) { - - sb.append("(no stack trace)"); - + sb.append('('); + + if (elements == null || elements.length == 0) { + sb.append("no stack trace"); } else { - sb.append('('); - sb.append(toString(elements[0])); - for (int i = 1; i < elements.length; i++) { - sb.append(' ').append(toString(elements[i])); + int levelCount = 0; + int position = minLevel; + while (levelCount <= (maxLevel - minLevel) && position < elements.length) { + + // Ignore synthetic "access$0" methods generated by the JRE + if (elements[position].getMethodName().contains("$")) { + position++; + continue; + } + + if (levelCount > 0) { + sb.append(' '); + } + sb.append(toString(elements[position])); + levelCount++; + position++; } - sb.append(" level=").append(minLevel).append(')'); } + sb.append(')'); + message = sb.toString(); } return message;