diff --git a/pvAccessApp/ca/caChannel.cpp b/pvAccessApp/ca/caChannel.cpp index 455d448..99b682a 100644 --- a/pvAccessApp/ca/caChannel.cpp +++ b/pvAccessApp/ca/caChannel.cpp @@ -578,7 +578,10 @@ void copy_DBR(const void * dbr, unsigned c { std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getScalarArrayField("value", pvInt)); - value->put(0, count, static_cast(dbr), 0); + PVIntArray::svector temp(value->reuse()); + temp.resize(count); + std::copy(static_cast(dbr), static_cast(dbr) + count, temp.begin()); + value->replace(freeze(temp)); } } #endif