mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 07:14:47 -05:00
fix(ext/node): remove unwraps from fallible conversions (#23447)
Removes `.unwrap()` calls from fallible conversion and replaces with graceful error returns.
This commit is contained in:
parent
9e4ba982df
commit
6c90d2401b
1 changed files with 32 additions and 14 deletions
|
@ -366,7 +366,9 @@ fn napi_create_dataview(
|
|||
let global = context.global(&mut env.scope());
|
||||
let data_view_name = v8::String::new(&mut env.scope(), "DataView").unwrap();
|
||||
let data_view = global.get(&mut env.scope(), data_view_name.into()).unwrap();
|
||||
let data_view = v8::Local::<v8::Function>::try_from(data_view).unwrap();
|
||||
let Ok(data_view) = v8::Local::<v8::Function>::try_from(data_view) else {
|
||||
return napi_function_expected;
|
||||
};
|
||||
let byte_offset = v8::Number::new(&mut env.scope(), byte_offset as f64);
|
||||
let byte_length = v8::Number::new(&mut env.scope(), len as f64);
|
||||
let value = data_view
|
||||
|
@ -905,7 +907,9 @@ fn napi_create_typedarray(
|
|||
check_env!(env);
|
||||
let env = unsafe { &mut *env };
|
||||
let ab = napi_value_unchecked(arraybuffer);
|
||||
let ab = v8::Local::<v8::ArrayBuffer>::try_from(ab).unwrap();
|
||||
let Ok(ab) = v8::Local::<v8::ArrayBuffer>::try_from(ab) else {
|
||||
return napi_arraybuffer_expected;
|
||||
};
|
||||
let typedarray: v8::Local<v8::Value> = match ty {
|
||||
napi_uint8_array => {
|
||||
v8::Uint8Array::new(&mut env.scope(), ab, byte_offset, length)
|
||||
|
@ -1737,12 +1741,15 @@ fn napi_get_buffer_info(
|
|||
check_env!(env);
|
||||
let env = unsafe { &mut *env };
|
||||
let value = napi_value_unchecked(value);
|
||||
let buf = v8::Local::<v8::ArrayBufferView>::try_from(value).unwrap();
|
||||
let Ok(buf) = v8::Local::<v8::ArrayBufferView>::try_from(value) else {
|
||||
return napi_arraybuffer_expected;
|
||||
};
|
||||
let buffer_name = v8::String::new(&mut env.scope(), "buffer").unwrap();
|
||||
let abuf = v8::Local::<v8::ArrayBuffer>::try_from(
|
||||
let Ok(abuf) = v8::Local::<v8::ArrayBuffer>::try_from(
|
||||
buf.get(&mut env.scope(), buffer_name.into()).unwrap(),
|
||||
)
|
||||
.unwrap();
|
||||
) else {
|
||||
return napi_arraybuffer_expected;
|
||||
};
|
||||
if !data.is_null() {
|
||||
*data = get_array_buffer_ptr(abuf);
|
||||
}
|
||||
|
@ -1804,12 +1811,15 @@ fn napi_get_dataview_info(
|
|||
check_env!(env);
|
||||
let env = unsafe { &mut *env };
|
||||
let value = napi_value_unchecked(value);
|
||||
let buf = v8::Local::<v8::DataView>::try_from(value).unwrap();
|
||||
let Ok(buf) = v8::Local::<v8::DataView>::try_from(value) else {
|
||||
return napi_invalid_arg;
|
||||
};
|
||||
let buffer_name = v8::String::new(&mut env.scope(), "buffer").unwrap();
|
||||
let abuf = v8::Local::<v8::ArrayBuffer>::try_from(
|
||||
let Ok(abuf) = v8::Local::<v8::ArrayBuffer>::try_from(
|
||||
buf.get(&mut env.scope(), buffer_name.into()).unwrap(),
|
||||
)
|
||||
.unwrap();
|
||||
) else {
|
||||
return napi_invalid_arg;
|
||||
};
|
||||
if !data.is_null() {
|
||||
*data = get_array_buffer_ptr(abuf);
|
||||
}
|
||||
|
@ -1827,7 +1837,9 @@ fn napi_get_date_value(
|
|||
let value = napi_value_unchecked(value);
|
||||
return_status_if_false!(env, value.is_date(), napi_date_expected);
|
||||
let env = unsafe { &mut *env };
|
||||
let date = v8::Local::<v8::Date>::try_from(value).unwrap();
|
||||
let Ok(date) = v8::Local::<v8::Date>::try_from(value) else {
|
||||
return napi_date_expected;
|
||||
};
|
||||
// TODO: should be value of
|
||||
*result = date.number_value(&mut env.scope()).unwrap();
|
||||
napi_ok
|
||||
|
@ -1843,7 +1855,9 @@ fn napi_get_element(
|
|||
check_env!(env);
|
||||
let env = unsafe { &mut *env };
|
||||
let object = napi_value_unchecked(object);
|
||||
let array = v8::Local::<v8::Array>::try_from(object).unwrap();
|
||||
let Ok(array) = v8::Local::<v8::Array>::try_from(object) else {
|
||||
return napi_invalid_arg;
|
||||
};
|
||||
let value: v8::Local<v8::Value> =
|
||||
array.get_index(&mut env.scope(), index).unwrap();
|
||||
*result = value.into();
|
||||
|
@ -2326,7 +2340,9 @@ fn napi_new_instance(
|
|||
check_env!(env);
|
||||
let env = unsafe { &mut *env };
|
||||
let constructor = napi_value_unchecked(constructor);
|
||||
let constructor = v8::Local::<v8::Function>::try_from(constructor).unwrap();
|
||||
let Ok(constructor) = v8::Local::<v8::Function>::try_from(constructor) else {
|
||||
return napi_function_expected;
|
||||
};
|
||||
let args: &[v8::Local<v8::Value>] =
|
||||
transmute(std::slice::from_raw_parts(argv, argc));
|
||||
let inst = constructor.new_instance(&mut env.scope(), args).unwrap();
|
||||
|
@ -2505,7 +2521,9 @@ fn napi_set_element(
|
|||
check_env!(env);
|
||||
let env = unsafe { &mut *env };
|
||||
let object = napi_value_unchecked(object);
|
||||
let array = v8::Local::<v8::Array>::try_from(object).unwrap();
|
||||
let Ok(array) = v8::Local::<v8::Array>::try_from(object) else {
|
||||
return napi_invalid_arg;
|
||||
};
|
||||
let value = napi_value_unchecked(value);
|
||||
array.set_index(&mut env.scope(), index, value).unwrap();
|
||||
napi_ok
|
||||
|
|
Loading…
Reference in a new issue