Skip to content

Commit c4b40ed

Browse files
committed
Support no native access in GetTimeZoneNode
1 parent e6c5117 commit c4b40ed

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

src/main/java/org/truffleruby/core/time/GetTimeZoneNode.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import java.util.regex.Pattern;
3535

3636
import com.oracle.truffle.api.CompilerDirectives;
37-
import org.truffleruby.RubyLanguage;
3837
import org.truffleruby.language.RubyBaseNode;
3938
import org.truffleruby.language.control.RaiseException;
4039
import org.truffleruby.language.dispatch.DispatchNode;
@@ -62,13 +61,18 @@ public static void invalidateTZ() {
6261

6362
@Specialization(assumptions = "TZ_UNCHANGED.getAssumption()")
6463
protected TimeZoneAndName getTimeZone(
65-
@Cached("getTZ(getLanguage())") Object tzValue,
64+
@Cached("getTZ()") Object tzValue,
6665
@Cached("getTimeZone(tzValue)") TimeZoneAndName zone) {
6766
return zone;
6867
}
6968

70-
protected Object getTZ(RubyLanguage language) {
71-
return lookupEnvNode.call(coreLibrary().getENV(), "[]", language.coreStrings.TZ.createInstance(getContext()));
69+
protected Object getTZ() {
70+
if (getContext().getEnv().isNativeAccessAllowed()) {
71+
return lookupEnvNode.call(coreLibrary().getENV(), "[]",
72+
getLanguage().coreStrings.TZ.createInstance(getContext()));
73+
} else {
74+
return nil;
75+
}
7276
}
7377

7478
@TruffleBoundary

src/test/java/org/truffleruby/JSR223InteropTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,9 @@ public void testCallingMethods() throws ScriptException, NoSuchMethodException {
6868

6969
@Test
7070
public void testCreatingObjects() throws ScriptException, NoSuchMethodException {
71-
try (TruffleRubyScriptEngine scriptEngine = new TruffleRubyScriptEngine(new TruffleRubyScriptEngineFactory(),
72-
true)) {
71+
final ScriptEngineManager m = new ScriptEngineManager();
72+
try (TruffleRubyScriptEngine scriptEngine = (TruffleRubyScriptEngine) m
73+
.getEngineByName(TruffleRuby.LANGUAGE_ID)) {
7374
final Object time = ((Invocable) scriptEngine).invokeMethod(scriptEngine.eval("Time"), "new", 2021, 3, 18);
7475
final Object year = ((Invocable) scriptEngine).invokeMethod(time, "year");
7576
assertEquals(2021, year);

src/test/java/org/truffleruby/PolyglotInteropTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@ public void testPassingBlocks() {
6262

6363
@Test
6464
public void testCreatingObjects() {
65-
// Native access needed for ENV['TZ']
66-
try (Context polyglot = Context.newBuilder().allowNativeAccess(true).build()) {
65+
try (Context polyglot = Context.create()) {
6766
assertEquals(
6867
2021,
6968
polyglot.eval("ruby", "Time").newInstance(2021, 3, 18).getMember("year").execute().asInt());

0 commit comments

Comments
 (0)