From 27d818bb19a60519f41afd9697982efbb338200a Mon Sep 17 00:00:00 2001 From: Lukas Stadler <lukas.stadler@oracle.com> Date: Fri, 10 Feb 2017 10:26:44 +0100 Subject: [PATCH] check for null parameters in PrepareArguments --- .../r/nodes/function/call/PrepareArguments.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/call/PrepareArguments.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/call/PrepareArguments.java index 5b48ec1019..d19da1dc99 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/call/PrepareArguments.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/call/PrepareArguments.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,6 +44,7 @@ import com.oracle.truffle.r.runtime.Arguments; import com.oracle.truffle.r.runtime.ArgumentsSignature; import com.oracle.truffle.r.runtime.RArguments.S3DefaultArguments; import com.oracle.truffle.r.runtime.RError; +import com.oracle.truffle.r.runtime.RInternalError; import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames; import com.oracle.truffle.r.runtime.nodes.RNode; @@ -92,7 +93,13 @@ public abstract class PrepareArguments extends Node { private static RArgsValuesAndNames executeArgs(RNode[] arguments, ArgumentsSignature suppliedSignature, VirtualFrame frame) { Object[] result = new Object[arguments.length]; for (int i = 0; i < arguments.length; i++) { - result[i] = arguments[i].execute(frame); + Object value = arguments[i].execute(frame); + if (CompilerDirectives.inInterpreter()) { + if (value == null) { + throw RInternalError.shouldNotReachHere("Java 'null' not allowed in arguments"); + } + } + result[i] = value; } return new RArgsValuesAndNames(result, suppliedSignature); } -- GitLab