@@ -1191,23 +1191,33 @@ void Swap64(const FunctionCallbackInfo<Value>& args) {
1191
1191
}
1192
1192
1193
1193
bool FastIsUtf8 (v8::Local<v8::Value>,
1194
- const v8::FastApiTypedArray<uint8_t >& buffer) {
1195
- uint8_t * buffer_data;
1196
- CHECK (buffer.getStorageIfAligned (&buffer_data));
1194
+ Local<Value> buffer,
1195
+ FastApiCallbackOptions& options) {
1197
1196
TRACK_V8_FAST_API_CALL (" buffer.isUtf8" );
1198
- return simdutf::validate_utf8 (reinterpret_cast <const char *>(buffer_data),
1199
- buffer.length ());
1197
+ ArrayBufferViewContents<uint8_t > view (buffer);
1198
+ if (view.WasDetached ()) {
1199
+ node::THROW_ERR_INVALID_STATE (options.isolate ,
1200
+ " Cannot validate on a detached buffer" );
1201
+ return false ;
1202
+ }
1203
+ return simdutf::validate_utf8 (reinterpret_cast <const char *>(view.data ()),
1204
+ view.length ());
1200
1205
}
1201
1206
1202
1207
static v8::CFunction fast_is_utf8 (v8::CFunction::Make(FastIsUtf8));
1203
1208
1204
1209
bool FastIsAscii (v8::Local<v8::Value>,
1205
- const v8::FastApiTypedArray<uint8_t >& buffer) {
1206
- uint8_t * buffer_data;
1207
- CHECK (buffer.getStorageIfAligned (&buffer_data));
1210
+ Local<Value> buffer,
1211
+ FastApiCallbackOptions& options) {
1208
1212
TRACK_V8_FAST_API_CALL (" buffer.isAscii" );
1209
- return simdutf::validate_ascii (reinterpret_cast <const char *>(buffer_data),
1210
- buffer.length ());
1213
+ ArrayBufferViewContents<uint8_t > view (buffer);
1214
+ if (view.WasDetached ()) {
1215
+ node::THROW_ERR_INVALID_STATE (options.isolate ,
1216
+ " Cannot validate on a detached buffer" );
1217
+ return false ;
1218
+ }
1219
+ return simdutf::validate_ascii (reinterpret_cast <const char *>(view.data ()),
1220
+ view.length ());
1211
1221
}
1212
1222
1213
1223
static v8::CFunction fast_is_ascii (v8::CFunction::Make(FastIsAscii));
0 commit comments