summaryrefslogtreecommitdiff
path: root/io_buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'io_buffer.c')
-rw-r--r--io_buffer.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/io_buffer.c b/io_buffer.c
index faa5304248..d9f50fc234 100644
--- a/io_buffer.c
+++ b/io_buffer.c
@@ -3625,6 +3625,10 @@ io_buffer_and_inplace(VALUE self, VALUE mask)
size_t size;
io_buffer_get_bytes_for_writing(buffer, &base, &size);
+ const void *mask_base;
+ size_t mask_size;
+ io_buffer_get_bytes_for_reading(mask_buffer, &mask_base, &mask_size);
+
memory_and_inplace(base, size, mask_buffer->base, mask_buffer->size);
return self;
@@ -3671,6 +3675,10 @@ io_buffer_or_inplace(VALUE self, VALUE mask)
size_t size;
io_buffer_get_bytes_for_writing(buffer, &base, &size);
+ const void *mask_base;
+ size_t mask_size;
+ io_buffer_get_bytes_for_reading(mask_buffer, &mask_base, &mask_size);
+
memory_or_inplace(base, size, mask_buffer->base, mask_buffer->size);
return self;
@@ -3717,6 +3725,10 @@ io_buffer_xor_inplace(VALUE self, VALUE mask)
size_t size;
io_buffer_get_bytes_for_writing(buffer, &base, &size);
+ const void *mask_base;
+ size_t mask_size;
+ io_buffer_get_bytes_for_reading(mask_buffer, &mask_base, &mask_size);
+
memory_xor_inplace(base, size, mask_buffer->base, mask_buffer->size);
return self;