Skip to content

Commit 5400c0b

Browse files
committed
SysModuleBuiltins: fix typo in addaudithook builtin
- fix exit status code as tuple arg
1 parent 9cc9e20 commit 5400c0b

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

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

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@
107107
import java.util.Map;
108108
import java.util.Set;
109109

110+
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
110111
import com.oracle.graal.python.nodes.util.CannotCastException;
111112
import org.graalvm.nativeimage.ImageInfo;
112113

@@ -850,7 +851,7 @@ Object doAudit(VirtualFrame frame, Object event, Object[] args) {
850851
}
851852
}
852853

853-
@Builtin(name = "audithook", minNumOfPositionalArgs = 1, doc = "addaudithook($module, /, hook)\n" +
854+
@Builtin(name = "addaudithook", minNumOfPositionalArgs = 1, doc = "addaudithook($module, /, hook)\n" +
854855
"--\n" +
855856
"\n" +
856857
"Adds a new audit hook callback.")
@@ -1360,7 +1361,7 @@ abstract static class BreakpointHookNode extends PythonBuiltinNode {
13601361
static final String METH_GET = "get";
13611362

13621363
private String getEnvVar(VirtualFrame frame, PyImportImport importNode, PyObjectGetAttr getAttr, PyObjectCallMethodObjArgs callMethodObjArgs,
1363-
CastToJavaStringNode castToJavaStringNode) {
1364+
CastToJavaStringNode castToJavaStringNode) {
13641365
Object os = importNode.execute(frame, MOD_OS);
13651366
final Object environ = getAttr.execute(frame, os, ATTR_ENVIRON);
13661367
Object var = callMethodObjArgs.execute(frame, environ, METH_GET, PYTHONBREAKPOINT);
@@ -1579,15 +1580,23 @@ Object setCheckInterval(VirtualFrame frame, @SuppressWarnings("unused") PythonMo
15791580
"exit status will be one (i.e., failure).")
15801581
@GenerateNodeFactory
15811582
abstract static class ExitNode extends PythonBinaryBuiltinNode {
1582-
@Specialization(guards = "!isPNone(status)")
1583-
Object exit(@SuppressWarnings("unused") PythonModule sys, Object status) {
1584-
throw raiseSystemExit(status);
1585-
}
1586-
15871583
@Specialization
15881584
@SuppressWarnings("unused")
15891585
Object exitNoCode(PythonModule sys, PNone status) {
15901586
throw raiseSystemExit(PNone.NONE);
15911587
}
1588+
1589+
@Specialization(guards = "!isPNone(status)")
1590+
Object exit(VirtualFrame frame, @SuppressWarnings("unused") PythonModule sys, Object status,
1591+
@Cached TupleBuiltins.GetItemNode getItemNode,
1592+
@Cached SequenceStorageNodes.LenNode lenNode) {
1593+
Object code = status;
1594+
if (status instanceof PTuple) {
1595+
if (lenNode.execute(((PTuple) status).getSequenceStorage()) == 1) {
1596+
code = getItemNode.execute(frame, status, 0);
1597+
}
1598+
}
1599+
throw raiseSystemExit(code);
1600+
}
15921601
}
15931602
}

0 commit comments

Comments
 (0)