diff --git a/LCS/Blob/include/Blob/BlobIBufVector.h b/LCS/Blob/include/Blob/BlobIBufVector.h index 3b8dc272272dba55c77f9495979ef92945af08f9..4c484492e9221041b405605903f92d570215940e 100644 --- a/LCS/Blob/include/Blob/BlobIBufVector.h +++ b/LCS/Blob/include/Blob/BlobIBufVector.h @@ -43,8 +43,9 @@ namespace LOFAR { public: // Construct from a vector. explicit BlobIBufVector (const std::vector<T>& buffer) - : BlobIBufChar(&buffer[0], buffer.size()*sizeof(T)) - {} + : BlobIBufChar(buffer.empty() ? 0 : &(buffer[0]), + buffer.size()*sizeof(T)) + {} // Destructor. virtual ~BlobIBufVector() diff --git a/LCS/Blob/include/Blob/BlobOBufVector.h b/LCS/Blob/include/Blob/BlobOBufVector.h index 4e48323f9990502870c4dd0c3b6f17443db12c33..177ccd72cbf5f6119000963fa5865c6ebc6e2042 100644 --- a/LCS/Blob/include/Blob/BlobOBufVector.h +++ b/LCS/Blob/include/Blob/BlobOBufVector.h @@ -53,12 +53,12 @@ namespace LOFAR { // not be deleted before this object. explicit BlobOBufVector (std::vector<T>& buffer, uint expandSize=1024, uint start=0) - : BlobOBufChar(&buffer[0], buffer.capacity(), - expandSize, start, false), - itsVector (&buffer) + : BlobOBufChar(buffer.empty() ? 0 : &(buffer[0]), + buffer.capacity(), expandSize, start, false), + itsVector (&buffer) { ASSERT(sizeof(T)==1); - ASSERT(start <= buffer.size()); + ASSERT(start <= buffer.size()); } // Destructor. @@ -71,9 +71,11 @@ namespace LOFAR { { if (newReservedSize > itsVector->capacity()) { itsVector->reserve (newReservedSize); - setBuffer (&((*itsVector)[0])); } itsVector->resize (newSize); + if (newSize > 0) { + setBuffer (&((*itsVector)[0])); + } } std::vector<T>* itsVector;