Skip to content

Commit 873bf44

Browse files
committed
[hotfix] missing signal.signal specialization
PullRequest: graalpython/371
2 parents 69887ad + 484a9f6 commit 873bf44

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,14 @@
4040
*/
4141
package com.oracle.graal.python.builtins.modules;
4242

43+
import static java.lang.StrictMath.toIntExact;
44+
4345
import java.util.Hashtable;
4446
import java.util.List;
4547

4648
import com.oracle.graal.python.builtins.Builtin;
4749
import com.oracle.graal.python.builtins.CoreFunctions;
50+
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
4851
import com.oracle.graal.python.builtins.PythonBuiltins;
4952
import com.oracle.graal.python.builtins.objects.PNone;
5053
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
@@ -203,6 +206,16 @@ Object signal(int signum, PBuiltinFunction handler) {
203206
Object signal(int signum, PFunction handler) {
204207
return installSignalHandler(signum, handler, handler.getCallTarget(), createArgs.execute(new Object[]{signum, PNone.NONE}));
205208
}
209+
210+
@Specialization
211+
@TruffleBoundary
212+
Object signal(long signum, PFunction handler) {
213+
try {
214+
return installSignalHandler(toIntExact(signum), handler, handler.getCallTarget(), createArgs.execute(new Object[]{signum, PNone.NONE}));
215+
} catch (ArithmeticException ae) {
216+
throw raise(PythonBuiltinClassType.OverflowError, "Python int too large to convert to C int");
217+
}
218+
}
206219
}
207220
}
208221

0 commit comments

Comments
 (0)