@@ -42,7 +42,6 @@ class ByteBufferImpl : public RefCounted<ByteBufferImpl> {
42
42
static NonnullRefPtr<ByteBufferImpl> create_zeroed (size_t );
43
43
static NonnullRefPtr<ByteBufferImpl> copy (const void *, size_t );
44
44
static NonnullRefPtr<ByteBufferImpl> wrap (void *, size_t );
45
- static NonnullRefPtr<ByteBufferImpl> wrap (const void *, size_t );
46
45
static NonnullRefPtr<ByteBufferImpl> adopt (void *, size_t );
47
46
48
47
~ByteBufferImpl () { clear (); }
@@ -135,7 +134,9 @@ class ByteBuffer {
135
134
static ByteBuffer create_uninitialized (size_t size) { return ByteBuffer (ByteBufferImpl::create_uninitialized (size)); }
136
135
static ByteBuffer create_zeroed (size_t size) { return ByteBuffer (ByteBufferImpl::create_zeroed (size)); }
137
136
static ByteBuffer copy (const void * data, size_t size) { return ByteBuffer (ByteBufferImpl::copy (data, size)); }
138
- static ByteBuffer wrap (const void * data, size_t size) { return ByteBuffer (ByteBufferImpl::wrap (data, size)); }
137
+ // The const version of this method was removed because it was misleading, suggesting copy on write
138
+ // functionality. If you really need the old behaviour, call ByteBuffer::wrap(const_cast<void*>(data), size)
139
+ // manually. Writing to such a byte buffer invokes undefined behaviour.
139
140
static ByteBuffer wrap (void * data, size_t size) { return ByteBuffer (ByteBufferImpl::wrap (data, size)); }
140
141
static ByteBuffer adopt (void * data, size_t size) { return ByteBuffer (ByteBufferImpl::adopt (data, size)); }
141
142
@@ -193,7 +194,7 @@ class ByteBuffer {
193
194
// I cannot hand you a slice I don't have
194
195
ASSERT (offset + size <= this ->size ());
195
196
196
- return wrap (offset_pointer (offset), size);
197
+ return wrap (const_cast < u8 *>( offset_pointer (offset) ), size);
197
198
}
198
199
199
200
ByteBuffer slice (size_t offset, size_t size) const
@@ -302,11 +303,6 @@ inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::wrap(void* data, size_t siz
302
303
return ::adopt (*new ByteBufferImpl (data, size, Wrap));
303
304
}
304
305
305
- inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::wrap (const void * data, size_t size)
306
- {
307
- return ::adopt (*new ByteBufferImpl (const_cast <void *>(data), size, Wrap));
308
- }
309
-
310
306
inline NonnullRefPtr<ByteBufferImpl> ByteBufferImpl::adopt (void * data, size_t size)
311
307
{
312
308
return ::adopt (*new ByteBufferImpl (data, size, Adopt));
0 commit comments