diff --git a/org.ntlab.traceAnalyzer/src/org/ntlab/trace/Trace.java b/org.ntlab.traceAnalyzer/src/org/ntlab/trace/Trace.java index 7067007..ddbe614 100644 --- a/org.ntlab.traceAnalyzer/src/org/ntlab/trace/Trace.java +++ b/org.ntlab.traceAnalyzer/src/org/ntlab/trace/Trace.java @@ -121,9 +121,11 @@ stack.pop(); } else { do { - line2 = stack.pop(); + stack.pop(); thread.terminateMethod(); + line2 = stack.peek(); } while (!stack.isEmpty() && !line2.split("\\(")[0].endsWith(line.split("\\(")[1])); + if (!stack.isEmpty()) stack.pop(); } thread = threads.get(threadNo); ObjectReference returnValue = new ObjectReference(returnData[2], returnData[1]); diff --git a/org.ntlab.traceAnalyzer/src/org/ntlab/trace/TraceJSON.java b/org.ntlab.traceAnalyzer/src/org/ntlab/trace/TraceJSON.java index 242f92c..5d5548c 100644 --- a/org.ntlab.traceAnalyzer/src/org/ntlab/trace/TraceJSON.java +++ b/org.ntlab.traceAnalyzer/src/org/ntlab/trace/TraceJSON.java @@ -194,9 +194,11 @@ stack.pop(); } else { do { - line2 = stack.pop(); + stack.pop(); thread.terminateMethod(); + line2 = stack.peek(); } while (!stack.isEmpty() && !line2.endsWith(shortSignature)); + if (!stack.isEmpty()) stack.pop(); } thread = threads.get(threadId[0]); ObjectReference returnVal = new ObjectReference(returnObjectId, returnClassName); @@ -236,9 +238,11 @@ stack.pop(); } else { do { - line2 = stack.pop(); + stack.pop(); thread.terminateMethod(); + line2 = stack.peek(); } while (!stack.isEmpty() && !line2.endsWith(shortSignature)); + if (!stack.isEmpty()) stack.pop(); } thread = threads.get(threadId[0]); ObjectReference returnVal = new ObjectReference(returnObjectId, returnClassName);