diff --git a/pvDataApp/factory/PVDataCreateFactory.cpp b/pvDataApp/factory/PVDataCreateFactory.cpp index 0a2fe00..e169596 100644 --- a/pvDataApp/factory/PVDataCreateFactory.cpp +++ b/pvDataApp/factory/PVDataCreateFactory.cpp @@ -231,7 +231,7 @@ DefaultPVArray::~DefaultPVArray() template void DefaultPVArray::setCapacity(size_t capacity) { - if(capacity>value.capacity()) { + if(this->isCapacityMutable() && capacity>value.capacity()) { value.reserve(capacity); PVArray::setCapacityLength(value.capacity(), value.size()); } @@ -240,6 +240,8 @@ void DefaultPVArray::setCapacity(size_t capacity) template void DefaultPVArray::setLength(size_t length) { + if(this->isImmutable()) + THROW_EXCEPTION2(std::logic_error,"Immutable"); if(length == value.size()) return; else if(length < value.size())