Skip to content

Commit

Permalink
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions core/src/main/java/org/jruby/RubySignal.java
Original file line number Diff line number Diff line change
@@ -97,11 +97,21 @@ public static Map<String, Integer> list() {
@JRubyMethod(meta = true)
public static IRubyObject list(ThreadContext context, IRubyObject recv) {
Ruby runtime = recv.getRuntime();
RubyHash names = RubyHash.newHash(runtime);
for (Map.Entry<String, Integer> sig : RubySignal.list().entrySet()) {
names.op_aset(context, runtime.newString(sig.getKey()), runtime.newFixnum(sig.getValue()));
RubyHash names;

synchronized (recv) {
names = (RubyHash) recv.getInternalVariables().getInternalVariable("signal_list");
if (names == null) {
names = RubyHash.newHash(runtime);
for (Map.Entry<String, Integer> sig : RubySignal.list().entrySet()) {
names.op_aset(context, runtime.freezeAndDedupString(runtime.newString(sig.getKey())), runtime.newFixnum(sig.getValue()));
}
names.op_aset(context, runtime.freezeAndDedupString(runtime.newString("EXIT")), runtime.newFixnum(0));
} else {
names.dup(context);
}
}
names.op_aset(context, runtime.newString("EXIT"), runtime.newFixnum(0));

return names;
}

0 comments on commit bad1e15

Please sign in to comment.