diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/LoadSaveFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/LoadSaveFunctions.java
index c607fbbbf5844b16a494cde7b44f4b1c77185f70..3f9917adf7e2b463ff9a3970d2138bb4d5292539 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/LoadSaveFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/LoadSaveFunctions.java
@@ -196,7 +196,7 @@ public class LoadSaveFunctions {
 
         @Override
         protected void createCasts(CastBuilder casts) {
-            casts.arg("list").mustBe(stringValue()).asStringVector().mustBe(notEmpty(), RError.Message.FIRST_ARGUMENT_NOT_CHARVEC).findFirst();
+            casts.arg("list").mustBe(stringValue()).asStringVector();
             ConnectionFunctions.Casts.connection(casts);
             casts.arg("ascii").mustBe(logicalValue(), RError.Message.ASCII_NOT_LOGICAL);
             casts.arg("version").allowNull().mustBe(integerValue());
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
index 7b9a8c46ef9062d6930e0f07d1c8127946905846..ae5334fe0894459b46907375e5f8c23a69fff9d2 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
@@ -41706,6 +41706,9 @@ $ix
  [1] -Inf -Inf -Inf -Inf -Inf -Inf    0    1    2    3    4    5  Inf  Inf  Inf
 [16]  Inf  Inf
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_quit.testQuitEmptyEnv#
+#{ quit("yes") }
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_quit.testQuitErrorSave#
 #{ quit("xx") }
 Error in quit(save, status, runLast) : unrecognized value of 'save'
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quit.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quit.java
index face212e7294372db312b4169fba1f6079d17338..7c3462c7f8ced5f4abaaaefd40f6780dedab55b9 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quit.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_quit.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
@@ -32,4 +32,9 @@ public class TestBuiltin_quit extends TestBase {
     public void testQuitErrorSave() {
         assertEval("{ quit(\"xx\") }");
     }
+
+    @Test
+    public void testQuitEmptyEnv() {
+        assertEval("{ quit(\"yes\") }");
+    }
 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
index 9cc6074db227a50b6d0c63322a786944de7dedfe..68702d56a7ff87c7d808dd9231b09113ce588d50 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java
@@ -35,6 +35,7 @@ import com.oracle.truffle.api.debug.SuspendedCallback;
 import com.oracle.truffle.api.debug.SuspendedEvent;
 import com.oracle.truffle.api.source.Source;
 import com.oracle.truffle.api.vm.PolyglotEngine;
+import com.oracle.truffle.r.runtime.ExitException;
 import com.oracle.truffle.r.runtime.RCmdOptions;
 import com.oracle.truffle.r.runtime.RCmdOptions.Client;
 import com.oracle.truffle.r.runtime.RError;
@@ -234,6 +235,8 @@ public final class FastRSession implements RSession {
             }
         } catch (ParseException e) {
             e.report(consoleHandler);
+        } catch (ExitException e) {
+            // exit exceptions are legitimate if a test case calls "q()"
         } catch (RError e) {
             // nothing to do
         } catch (Throwable t) {