fix a bug in interpretRaw that crashed the program
This commit is contained in:
parent
8b55f0921f
commit
b535caf9c0
1 changed files with 15 additions and 5 deletions
|
@ -915,6 +915,15 @@ public class ISBPL {
|
||||||
ISBPLType type = getType(clazz.getName());
|
ISBPLType type = getType(clazz.getName());
|
||||||
if(type == null) {
|
if(type == null) {
|
||||||
type = registerType(clazz.getName());
|
type = registerType(clazz.getName());
|
||||||
|
if (clazz.isEnum()) {
|
||||||
|
for (Object o : clazz.getEnumConstants()) {
|
||||||
|
addFunction(type, o.toString(), stack -> {
|
||||||
|
if(debug)
|
||||||
|
System.err.println("Java GetEnum: " + o);
|
||||||
|
stack.push(toISBPL(o));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
for (Field field : clazz.getDeclaredFields()) {
|
for (Field field : clazz.getDeclaredFields()) {
|
||||||
addFunction(type, field.getName(), stack -> {
|
addFunction(type, field.getName(), stack -> {
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
|
@ -1127,16 +1136,17 @@ public class ISBPL {
|
||||||
}
|
}
|
||||||
System.err.println(s + word + "\t\t" + (debug ? stack : ""));
|
System.err.println(s + word + "\t\t" + (debug ? stack : ""));
|
||||||
}
|
}
|
||||||
while (debuggerIPC.run.get(Thread.currentThread().getId()) == 0) Thread.sleep(1);
|
while (debuggerIPC.run.getOrDefault(Thread.currentThread().getId(), -1) == 0) Thread.sleep(1);
|
||||||
if(debuggerIPC.run.get(Thread.currentThread().getId()) < 0) {
|
int rid = debuggerIPC.run.getOrDefault(Thread.currentThread().getId(), -1);
|
||||||
if(debuggerIPC.run.get(Thread.currentThread().getId()) < -1) {
|
if(rid < 0) {
|
||||||
if (debuggerIPC.run.get(Thread.currentThread().getId()) == -2) {
|
if(rid < -1) {
|
||||||
|
if (rid == -2) {
|
||||||
if (word.equals(debuggerIPC.until)) {
|
if (word.equals(debuggerIPC.until)) {
|
||||||
debuggerIPC.run.put(Thread.currentThread().getId(), 0);
|
debuggerIPC.run.put(Thread.currentThread().getId(), 0);
|
||||||
while (debuggerIPC.run.get(Thread.currentThread().getId()) == 0) Thread.sleep(1);
|
while (debuggerIPC.run.get(Thread.currentThread().getId()) == 0) Thread.sleep(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (debuggerIPC.run.get(Thread.currentThread().getId()) == -3 && Thread.currentThread().getId() != debuggerIPC.threadID) {
|
if (rid == -3 && Thread.currentThread().getId() != debuggerIPC.threadID) {
|
||||||
while (debuggerIPC.run.get(Thread.currentThread().getId()) == -3) Thread.sleep(1);
|
while (debuggerIPC.run.get(Thread.currentThread().getId()) == -3) Thread.sleep(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue