Skip to content

Commit 6386d3f

Browse files
committed
buffer: remove repeated method
1 parent 1080519 commit 6386d3f

File tree

1 file changed

+14
-32
lines changed

1 file changed

+14
-32
lines changed

src/node_buffer.cc

Lines changed: 14 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,7 +1399,20 @@ namespace {
13991399
std::pair<void*, size_t> DecomposeBufferToParts(Local<Value> buffer) {
14001400
void* pointer;
14011401
size_t byte_length;
1402-
if (buffer->IsArrayBuffer()) {
1402+
1403+
if (buffer->IsArrayBufferView()) {
1404+
Local<ArrayBufferView> view = buffer.As<ArrayBufferView>();
1405+
Local<ArrayBuffer> buffer = view->Buffer();
1406+
1407+
// Handle potential detached buffer case
1408+
if (buffer.IsEmpty() || buffer->Data() == nullptr) {
1409+
pointer = nullptr;
1410+
byte_length = 0;
1411+
} else {
1412+
pointer = static_cast<uint8_t*>(buffer->Data()) + view->ByteOffset();
1413+
byte_length = view->ByteLength();
1414+
}
1415+
} else if (buffer->IsArrayBuffer()) {
14031416
Local<ArrayBuffer> ab = buffer.As<ArrayBuffer>();
14041417
pointer = ab->Data();
14051418
byte_length = ab->ByteLength();
@@ -1449,37 +1462,6 @@ void CopyArrayBuffer(const FunctionCallbackInfo<Value>& args) {
14491462
memcpy(dest, src, bytes_to_copy);
14501463
}
14511464

1452-
std::pair<void*, size_t> DecomposeBufferToParts(Local<Value> source) {
1453-
void* pointer;
1454-
size_t byte_length;
1455-
1456-
if (source->IsArrayBufferView()) {
1457-
Local<ArrayBufferView> view = source.As<ArrayBufferView>();
1458-
Local<ArrayBuffer> buffer = view->Buffer();
1459-
1460-
// Handle potential detached buffer case
1461-
if (buffer.IsEmpty() || buffer->Data() == nullptr) {
1462-
pointer = nullptr;
1463-
byte_length = 0;
1464-
} else {
1465-
pointer = static_cast<uint8_t*>(buffer->Data()) + view->ByteOffset();
1466-
byte_length = view->ByteLength();
1467-
}
1468-
} else if (source->IsArrayBuffer()) {
1469-
Local<ArrayBuffer> ab = source.As<ArrayBuffer>();
1470-
pointer = ab->Data();
1471-
byte_length = ab->ByteLength();
1472-
} else if (source->IsSharedArrayBuffer()) {
1473-
Local<SharedArrayBuffer> ab = source.As<SharedArrayBuffer>();
1474-
pointer = ab->Data();
1475-
byte_length = ab->ByteLength();
1476-
} else {
1477-
UNREACHABLE(); // Caller must validate.
1478-
}
1479-
1480-
return {pointer, byte_length};
1481-
}
1482-
14831465
void StaticCopy(const FunctionCallbackInfo<Value>& args) {
14841466
Environment* env = Environment::GetCurrent(args);
14851467

0 commit comments

Comments
 (0)