@@ -1346,7 +1346,7 @@ inline ArrayBuffer ArrayBuffer::New(napi_env env, size_t byteLength) {
13461346 napi_status status = napi_create_arraybuffer (env, byteLength, &data, &value);
13471347 NAPI_THROW_IF_FAILED (env, status, ArrayBuffer ());
13481348
1349- return ArrayBuffer (env, value, data, byteLength );
1349+ return ArrayBuffer (env, value);
13501350}
13511351
13521352inline ArrayBuffer ArrayBuffer::New (napi_env env,
@@ -1357,7 +1357,7 @@ inline ArrayBuffer ArrayBuffer::New(napi_env env,
13571357 env, externalData, byteLength, nullptr , nullptr , &value);
13581358 NAPI_THROW_IF_FAILED (env, status, ArrayBuffer ());
13591359
1360- return ArrayBuffer (env, value, externalData, byteLength );
1360+ return ArrayBuffer (env, value);
13611361}
13621362
13631363template <typename Finalizer>
@@ -1380,7 +1380,7 @@ inline ArrayBuffer ArrayBuffer::New(napi_env env,
13801380 NAPI_THROW_IF_FAILED (env, status, ArrayBuffer ());
13811381 }
13821382
1383- return ArrayBuffer (env, value, externalData, byteLength );
1383+ return ArrayBuffer (env, value);
13841384}
13851385
13861386template <typename Finalizer, typename Hint>
@@ -1404,38 +1404,28 @@ inline ArrayBuffer ArrayBuffer::New(napi_env env,
14041404 NAPI_THROW_IF_FAILED (env, status, ArrayBuffer ());
14051405 }
14061406
1407- return ArrayBuffer (env, value, externalData, byteLength );
1407+ return ArrayBuffer (env, value);
14081408}
14091409
1410- inline ArrayBuffer::ArrayBuffer () : Object(), _data( nullptr ), _length( 0 ) {
1410+ inline ArrayBuffer::ArrayBuffer () : Object() {
14111411}
14121412
14131413inline ArrayBuffer::ArrayBuffer (napi_env env, napi_value value)
1414- : Object(env, value), _data(nullptr ), _length(0 ) {
1415- }
1416-
1417- inline ArrayBuffer::ArrayBuffer (napi_env env, napi_value value, void * data, size_t length)
1418- : Object(env, value), _data(data), _length(length) {
1414+ : Object(env, value) {
14191415}
14201416
14211417inline void * ArrayBuffer::Data () {
1422- EnsureInfo ();
1423- return _data;
1418+ void * data;
1419+ napi_status status = napi_get_arraybuffer_info (_env, _value, &data, nullptr );
1420+ NAPI_THROW_IF_FAILED (_env, status, nullptr );
1421+ return data;
14241422}
14251423
14261424inline size_t ArrayBuffer::ByteLength () {
1427- EnsureInfo ();
1428- return _length;
1429- }
1430-
1431- inline void ArrayBuffer::EnsureInfo () const {
1432- // The ArrayBuffer instance may have been constructed from a napi_value whose
1433- // length/data are not yet known. Fetch and cache these values just once,
1434- // since they can never change during the lifetime of the ArrayBuffer.
1435- if (_data == nullptr ) {
1436- napi_status status = napi_get_arraybuffer_info (_env, _value, &_data, &_length);
1437- NAPI_THROW_IF_FAILED_VOID (_env, status);
1438- }
1425+ size_t length;
1426+ napi_status status = napi_get_arraybuffer_info (_env, _value, nullptr , &length);
1427+ NAPI_THROW_IF_FAILED (_env, status, 0 );
1428+ return length;
14391429}
14401430
14411431// //////////////////////////////////////////////////////////////////////////////
0 commit comments