diff --git a/src/message.cc b/src/message.cc index 1d72441..e063d1c 100644 --- a/src/message.cc +++ b/src/message.cc @@ -12,13 +12,18 @@ namespace pEp { } - Message::Blob::Blob(const Blob& second) + Message::Blob::Blob(const Blob& second, bool copy) { _size = second._size; - _value = (char *) malloc(_size); - if (!_value) - throw bad_alloc(); - memcpy(_value, second._value, _size); + if (copy) { + _value = (char *) malloc(_size); + if (!_value) + throw bad_alloc(); + memcpy(_value, second._value, _size); + } + else { + _value = second._value; + } _mime_type = second._mime_type; _filename = second._filename; } diff --git a/src/message.hh b/src/message.hh index a13e300..5e591ff 100644 --- a/src/message.hh +++ b/src/message.hh @@ -19,7 +19,7 @@ namespace pEp { public: Blob(char *value = NULL, size_t size = 0, string mime_type = "", string filename = ""); - Blob(const Blob& second); + Blob(const Blob& second, bool copy = false); ~Blob(); void attach(bloblist_t *blob); bloblist_t *detach();