@@ -17,7 +17,10 @@ using v8::Array;
1717using v8::ArrayBuffer;
1818using v8::ArrayBufferView;
1919using v8::BackingStore;
20+ using v8::BackingStoreInitializationMode;
21+ using v8::BackingStoreOnFailureMode;
2022using v8::BigInt;
23+ using v8::Isolate;
2124using v8::Just;
2225using v8::Local;
2326using v8::Maybe;
@@ -89,14 +92,14 @@ Store::Store(std::unique_ptr<BackingStore> store, size_t length, size_t offset)
8992}
9093
9194Maybe<Store> Store::From (Local<ArrayBuffer> buffer) {
92- v8:: Isolate* isolate = v8:: Isolate::GetCurrent ();
95+ Isolate* isolate = Isolate::GetCurrent ();
9396 Environment* env = Environment::GetCurrent (isolate->GetCurrentContext ());
9497 auto length = buffer->ByteLength ();
9598 auto dest = ArrayBuffer::NewBackingStore (
9699 isolate,
97100 length,
98- v8:: BackingStoreInitializationMode::kUninitialized ,
99- v8:: BackingStoreOnFailureMode::kReturnNull );
101+ BackingStoreInitializationMode::kUninitialized ,
102+ BackingStoreOnFailureMode::kReturnNull );
100103 if (!dest) {
101104 THROW_ERR_MEMORY_ALLOCATION_FAILED (env);
102105 return Nothing<Store>();
@@ -108,15 +111,15 @@ Maybe<Store> Store::From(Local<ArrayBuffer> buffer) {
108111}
109112
110113Maybe<Store> Store::From (Local<ArrayBufferView> view) {
111- v8:: Isolate* isolate = v8:: Isolate::GetCurrent ();
114+ Isolate* isolate = Isolate::GetCurrent ();
112115 Environment* env = Environment::GetCurrent (isolate->GetCurrentContext ());
113116 auto length = view->ByteLength ();
114117 auto offset = view->ByteOffset ();
115118 auto dest = ArrayBuffer::NewBackingStore (
116119 isolate,
117120 length,
118- v8:: BackingStoreInitializationMode::kUninitialized ,
119- v8:: BackingStoreOnFailureMode::kReturnNull );
121+ BackingStoreInitializationMode::kUninitialized ,
122+ BackingStoreOnFailureMode::kReturnNull );
120123 if (!dest) {
121124 THROW_ERR_MEMORY_ALLOCATION_FAILED (env);
122125 return Nothing<Store>();
@@ -130,24 +133,34 @@ Maybe<Store> Store::From(Local<ArrayBufferView> view) {
130133}
131134
132135Store Store::CopyFrom (Local<ArrayBuffer> buffer) {
133- v8:: Isolate* isolate = v8:: Isolate::GetCurrent ();
136+ Isolate* isolate = Isolate::GetCurrent ();
134137 auto backing = buffer->GetBackingStore ();
135138 auto length = buffer->ByteLength ();
136139 auto dest = ArrayBuffer::NewBackingStore (
137- isolate, length, v8::BackingStoreInitializationMode::kUninitialized );
140+ isolate, length, BackingStoreInitializationMode::kUninitialized ,
141+ BackingStoreOnFailureMode::kReturnNull );
142+ if (!dest) {
143+ THROW_ERR_MEMORY_ALLOCATION_FAILED (Environment::GetCurrent (isolate));
144+ return Store ();
145+ }
138146 // copy content
139147 memcpy (dest->Data (), backing->Data (), length);
140148 return Store (std::move (dest), length, 0 );
141149}
142150
143151Store Store::CopyFrom (Local<ArrayBufferView> view) {
144- v8:: Isolate* isolate = v8:: Isolate::GetCurrent ();
152+ Isolate* isolate = Isolate::GetCurrent ();
145153 auto backing = view->Buffer ()->GetBackingStore ();
146154 auto length = view->ByteLength ();
147155 auto offset = view->ByteOffset ();
148156 auto dest = ArrayBuffer::NewBackingStore (
149- isolate, length, v8::BackingStoreInitializationMode::kUninitialized );
157+ isolate, length, BackingStoreInitializationMode::kUninitialized ,
158+ BackingStoreOnFailureMode::kReturnNull );
150159 // copy content
160+ if (!dest) {
161+ THROW_ERR_MEMORY_ALLOCATION_FAILED (Environment::GetCurrent (isolate));
162+ return Store ();
163+ }
151164 memcpy (dest->Data (), static_cast <char *>(backing->Data ()) + offset, length);
152165 return Store (std::move (dest), length, 0 );
153166}
0 commit comments