Browse Source

On overlapping buffers use memmove

v0.7.4-release
Matt Ranney 15 years ago
committed by Ryan Dahl
parent
commit
02ed0ec93b
  1. 7
      src/node_buffer.cc

7
src/node_buffer.cc

@ -323,9 +323,16 @@ Handle<Value> Buffer::Copy(const Arguments &args) {
ssize_t to_copy = MIN(source_end - source_start,
target->length() - target_start);
if (target->blob_ == source->blob_) {
// need to use slightly slower memmove is the ranges might overlap
memmove((void*)(target->data() + target_start),
(const void*)(source->data() + source_start),
to_copy);
} else {
memcpy((void*)(target->data() + target_start),
(const void*)(source->data() + source_start),
to_copy);
}
return scope.Close(Integer::New(to_copy));
}

Loading…
Cancel
Save