- buf_range = new BufferRange(*buffer, buffer_offset, size);
- buf_range->data(&data[0]);
+ buf_range = new BufferRange(*get_mutable_buffer(), get_offset(), size);
+
+ if(target)
+ copy(data.begin(), data.end(), target);
+ else
+ buf_range->data(&data[0]);