Skip to content

Commit 62d2d01

Browse files
committed
Fix signal lookup
1 parent ec44b98 commit 62d2d01

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/SignalModuleBuiltins.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,7 @@ private static Object handlerToPython(PythonObjectFactory factory, SignalHandler
183183
} else if (handler == sun.misc.SignalHandler.SIG_IGN) {
184184
return Signals.SIG_IGN;
185185
} else if (handler instanceof Signals.PythonSignalHandler) {
186-
if (signalHandlers.containsKey(signum)) {
187-
return signalHandlers.get(signum);
188-
} else {
189-
return PNone.NONE;
190-
}
186+
return signalHandlers.getOrDefault(signum, PNone.NONE);
191187
} else {
192188
return factory.createJavaSignalHandler(handler);
193189
}
@@ -242,8 +238,9 @@ private Object signal(int signum, int id) {
242238
} catch (IllegalArgumentException e) {
243239
throw raise(PythonErrorType.TypeError, ErrorMessages.SIGNAL_MUST_BE_SIGIGN_SIGDFL_OR_CALLABLE_OBJ);
244240
}
245-
signalHandlers.put(signum, id);
246-
return handlerToPython(factory(), oldHandler, signum);
241+
Object result = handlerToPython(factory(), oldHandler, signum);
242+
signalHandlers.remove(signum);
243+
return result;
247244
}
248245

249246
@Specialization(limit = "1")
@@ -261,8 +258,9 @@ private Object signal(int signum, PJavaSignalHandler handler) {
261258
} catch (IllegalArgumentException e) {
262259
throw raise(PythonErrorType.ValueError, e);
263260
}
261+
Object result = handlerToPython(factory(), oldHandler, signum);
264262
signalHandlers.remove(signum);
265-
return handlerToPython(factory(), oldHandler, signum);
263+
return result;
266264
}
267265

268266
@Specialization(guards = "handlerLib.isCallable(handler)", limit = "1")
@@ -288,8 +286,9 @@ private Object signal(PythonModule self, int signum, Object handler, ReadAttribu
288286
} catch (IllegalArgumentException e) {
289287
throw raise(PythonErrorType.ValueError, e);
290288
}
289+
Object result = handlerToPython(factory(), oldHandler, signum);
291290
signalHandlers.put(signum, handler);
292-
return handlerToPython(factory(), oldHandler, signum);
291+
return result;
293292
}
294293

295294
@SuppressWarnings("unchecked")

0 commit comments

Comments
 (0)