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; } }