diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/write/UpdateArrayHelperNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/write/UpdateArrayHelperNode.java
index 1aafaa28910009c2b00768c5c8dafe1c4b233f91..3e4fe4a735792b50c4327e066e3dfae9f47f8b09 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/write/UpdateArrayHelperNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/write/UpdateArrayHelperNode.java
@@ -428,6 +428,9 @@ public abstract class UpdateArrayHelperNode extends RNode {
         if (positions.getNames() != null) {
             posNames.enter();
             RStringVector names = getNamesVector(resultVector);
+            if (names.isShared()) {
+                names = (RStringVector) names.copy();
+            }
             RStringVector newNames = positions.getNames();
             namesNACheck.enable(newNames);
             for (int i = 0; i < positions.getLength(); i++) {
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RVector.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RVector.java
index 8ff364820954b83bea850200e04369cf70ba2b14..b5afd53f0a44c8559cb1a4b264f960a208fcb972 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RVector.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RVector.java
@@ -118,13 +118,12 @@ public abstract class RVector extends RBounded implements RShareable, RAbstractV
     public final RStringVector getNames() {
         if (names == null) {
             if (dimNames != null && dimNames.getLength() == 1) {
-                RStringVector res = (RStringVector) dimNames.getDataAt(0);
-                return res.isShared() ? (RStringVector) res.copy() : res;
+                return (RStringVector) dimNames.getDataAt(0);
             } else {
                 return null;
             }
         } else {
-            return names.isShared() ? (RStringVector) names.copy() : names;
+            return names;
         }
     }