IDEA-132625 (decompiler time limit)

This commit is contained in:
Roman Shevchenko
2014-11-10 16:05:22 +01:00
parent 52a7e1c7e9
commit 3940565598
2 changed files with 12 additions and 7 deletions

View File

@@ -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);
} }

View File

@@ -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;
} }
} }