diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedReplaceVectorNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedReplaceVectorNode.java
index e97deb79960c8e6294a2c646575b626017c1f7a5..c13c5c004b2639b922437805d9a8d76df6866700 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedReplaceVectorNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedReplaceVectorNode.java
@@ -555,19 +555,21 @@ final class CachedReplaceVectorNode extends CachedVectorNode {
             }
 
             int resultIndex = 0;
-            for (int i = 0; i < vectorLength; i++) {
-                Object element = vector.getDataAtAsObject(i);
-                if (element != DELETE_MARKER) {
-                    data[resultIndex] = element;
-                    if (hasNames) {
-                        newNames[resultIndex] = names.getDataAt(i);
-                    }
-                    resultIndex++;
-                    if (isPreviousResultSpecialized() && resultIndex > resultLength) {
-                        // got too many elements
-                        CompilerDirectives.transferToInterpreterAndInvalidate();
-                        previousResultLength = PREVIOUS_RESULT_GENERIC;
-                        return deleteElements(vector, vectorLength);
+            if (resultLength > 0) {
+                for (int i = 0; i < vectorLength; i++) {
+                    Object element = vector.getDataAtAsObject(i);
+                    if (element != DELETE_MARKER) {
+                        data[resultIndex] = element;
+                        if (hasNames) {
+                            newNames[resultIndex] = names.getDataAt(i);
+                        }
+                        resultIndex++;
+                        if (isPreviousResultSpecialized() && resultIndex > resultLength) {
+                            // got too many elements
+                            CompilerDirectives.transferToInterpreterAndInvalidate();
+                            previousResultLength = PREVIOUS_RESULT_GENERIC;
+                            return deleteElements(vector, vectorLength);
+                        }
                     }
                 }
             }