From 6e3a344caaea2bfebdaca81e6c068f5b13b62d69 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Tue, 16 Jul 2013 10:48:01 -0400 Subject: [PATCH] fix Convert::fromStringArray destination should grow to fit --- pvDataApp/factory/Convert.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/pvDataApp/factory/Convert.cpp b/pvDataApp/factory/Convert.cpp index dc29861..463989b 100644 --- a/pvDataApp/factory/Convert.cpp +++ b/pvDataApp/factory/Convert.cpp @@ -114,13 +114,20 @@ size_t Convert::fromStringArray(PVScalarArrayPtr const &pv, StringArray const & from, size_t fromOffset) { - assert(offset==0); size_t alen = pv->getLength(); - if(fromOffset>alen) return 0; - alen -= fromOffset; - if(length>alen) length=alen; - pv->copyIn(&from[fromOffset], length); - return length; + + if(offset==0 && length>=alen) { + // replace all existing elements + assert(from.size()>=fromOffset+length); + if(length>alen) + pv->setLength(length); + pv->copyIn(&from[fromOffset], length); + return length; + + } else { + // partial update. + throw std::runtime_error("fromStringArray: partial update not implemented"); + } } size_t Convert::toStringArray(PVScalarArrayPtr const & pv,