@@ -183,11 +183,7 @@ private static Object handlerToPython(PythonObjectFactory factory, SignalHandler
183
183
} else if (handler == sun .misc .SignalHandler .SIG_IGN ) {
184
184
return Signals .SIG_IGN ;
185
185
} 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 );
191
187
} else {
192
188
return factory .createJavaSignalHandler (handler );
193
189
}
@@ -242,8 +238,9 @@ private Object signal(int signum, int id) {
242
238
} catch (IllegalArgumentException e ) {
243
239
throw raise (PythonErrorType .TypeError , ErrorMessages .SIGNAL_MUST_BE_SIGIGN_SIGDFL_OR_CALLABLE_OBJ );
244
240
}
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 ;
247
244
}
248
245
249
246
@ Specialization (limit = "1" )
@@ -261,8 +258,9 @@ private Object signal(int signum, PJavaSignalHandler handler) {
261
258
} catch (IllegalArgumentException e ) {
262
259
throw raise (PythonErrorType .ValueError , e );
263
260
}
261
+ Object result = handlerToPython (factory (), oldHandler , signum );
264
262
signalHandlers .remove (signum );
265
- return handlerToPython ( factory (), oldHandler , signum ) ;
263
+ return result ;
266
264
}
267
265
268
266
@ Specialization (guards = "handlerLib.isCallable(handler)" , limit = "1" )
@@ -288,8 +286,9 @@ private Object signal(PythonModule self, int signum, Object handler, ReadAttribu
288
286
} catch (IllegalArgumentException e ) {
289
287
throw raise (PythonErrorType .ValueError , e );
290
288
}
289
+ Object result = handlerToPython (factory (), oldHandler , signum );
291
290
signalHandlers .put (signum , handler );
292
- return handlerToPython ( factory (), oldHandler , signum ) ;
291
+ return result ;
293
292
}
294
293
295
294
@ SuppressWarnings ("unchecked" )
0 commit comments