diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RLengthNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RLengthNode.java
index a7a57f523a4f14412abb09f5440eb82abaf47a1a..9406bba633e9b0a0b82a76b24cd23f9b3ab7a653 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RLengthNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/control/RLengthNode.java
@@ -34,6 +34,7 @@ import com.oracle.truffle.api.nodes.Node;
 import com.oracle.truffle.r.nodes.profile.VectorLengthProfile;
 import com.oracle.truffle.r.runtime.RError;
 import com.oracle.truffle.r.runtime.RRuntime;
+import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
 import com.oracle.truffle.r.runtime.data.RFunction;
 import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.data.RSymbol;
@@ -118,6 +119,11 @@ public abstract class RLengthNode extends RNode {
         return lengthProfile.profile(env.ls(true, null, false).getLength());
     }
 
+    @Specialization
+    protected int getLength(RArgsValuesAndNames vargs) {
+        return vargs.getLength();
+    }
+
     @Specialization
     protected int getLength(@SuppressWarnings("unused") RFunction func) {
         return 1;
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 f2273c956a2b99acddb1c45321d2fe090d31a357..45868f9bc35459c11522e2c64d4925d28007fe92 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
@@ -30975,6 +30975,10 @@ NULL
 #length(quote(x))
 [1] 1
 
+##com.oracle.truffle.r.test.builtins.TestBuiltin_length.testLength#
+#{ foo <- function(...) length(get('...')); foo(a=1, b=2, c=3, d=4); }
+[1] 4
+
 ##com.oracle.truffle.r.test.builtins.TestBuiltin_length.testLength#
 #{ length(1) }
 [1] 1
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_length.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_length.java
index 62dee27127dced946709a9b53cb034dd31b42166..d03f279dee4133967964c619cefcf45ba45a898d 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_length.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_length.java
@@ -4,7 +4,7 @@
  * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * Copyright (c) 2012-2014, Purdue University
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates
  *
  * All rights reserved.
  */
@@ -210,5 +210,6 @@ public class TestBuiltin_length extends TestBase {
         assertEval("{ length(1:3) }");
         assertEval("length(quote(x))");
         assertEval("length(as.symbol('x'))");
+        assertEval("{ foo <- function(...) length(get('...')); foo(a=1, b=2, c=3, d=4); }");
     }
 }