IDEA-132625 (decompiler time limit)

master
Roman Shevchenko 10 years ago
parent 52a7e1c7e9
commit 3940565598
  1. 2
      src/org/jetbrains/java/decompiler/main/rels/ClassWrapper.java
  2. 17
      src/org/jetbrains/java/decompiler/main/rels/MethodProcessorRunnable.java

@ -94,7 +94,7 @@ public class ClassWrapper {
mtThread.start(); mtThread.start();
while (mtThread.isAlive()) { while (!mtProc.isFinished()) {
synchronized (mtProc.lock) { synchronized (mtProc.lock) {
mtProc.lock.wait(100); mtProc.lock.wait(100);
} }

@ -41,6 +41,7 @@ public class MethodProcessorRunnable implements Runnable {
private volatile RootStatement root; private volatile RootStatement root;
private volatile Throwable error; private volatile Throwable error;
private volatile boolean finished = false;
public MethodProcessorRunnable(StructMethod method, VarProcessor varProc, DecompilerContext parentContext) { public MethodProcessorRunnable(StructMethod method, VarProcessor varProc, DecompilerContext parentContext) {
this.method = method; this.method = method;
@ -57,10 +58,6 @@ public class MethodProcessorRunnable implements Runnable {
try { try {
root = codeToJava(method, varProc); root = codeToJava(method, varProc);
synchronized (lock) {
lock.notifyAll();
}
} }
catch (ThreadDeath ex) { catch (ThreadDeath ex) {
throw ex; throw ex;
@ -68,6 +65,14 @@ public class MethodProcessorRunnable implements Runnable {
catch (Throwable ex) { catch (Throwable ex) {
error = ex; error = ex;
} }
finally {
DecompilerContext.setCurrentContext(null);
}
finished = true;
synchronized (lock) {
lock.notifyAll();
}
} }
public static RootStatement codeToJava(StructMethod mt, VarProcessor varProc) throws IOException { public static RootStatement codeToJava(StructMethod mt, VarProcessor varProc) throws IOException {
@ -206,7 +211,7 @@ public class MethodProcessorRunnable implements Runnable {
return root; return root;
} }
public Throwable getError() { public boolean isFinished() {
return error; return finished;
} }
} }

Loading…
Cancel
Save