script: Mark as unsafe multiple array_buffer_view_to_xxx functions that take a raw JSObject pointer.

This commit is contained in:
Emilio Cobos Álvarez 2016-09-17 13:59:42 -07:00
parent ea8f115b8c
commit 602246a14c
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
2 changed files with 44 additions and 28 deletions

View file

@ -863,7 +863,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
_ => return self.webgl_error(InvalidEnum),
}
if let Some(data_vec) = array_buffer_view_to_vec::<u8>(data) {
if let Some(data_vec) = unsafe { array_buffer_view_to_vec::<u8>(data) } {
handle_potential_webgl_error!(self, bound_buffer.buffer_data(target, &data_vec, usage));
} else {
// NB: array_buffer_view_to_vec should never fail when we have
@ -894,7 +894,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
return self.webgl_error(InvalidValue);
}
if let Some(data_vec) = array_buffer_view_to_vec::<u8>(data) {
if let Some(data_vec) = unsafe { array_buffer_view_to_vec::<u8>(data) } {
if (offset as usize) + data_vec.len() > bound_buffer.capacity() {
return self.webgl_error(InvalidValue);
}
@ -2061,8 +2061,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
#[allow(unsafe_code)]
fn VertexAttrib1fv(&self, _cx: *mut JSContext, indx: u32, data: *mut JSObject) {
if let Some(data_vec) = array_buffer_view_to_vec_checked::<f32>(data) {
assert!(!data.is_null());
if let Some(data_vec) = unsafe { array_buffer_view_to_vec_checked::<f32>(data) } {
if data_vec.len() < 1 {
return self.webgl_error(InvalidOperation);
}
@ -2078,8 +2080,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
#[allow(unsafe_code)]
fn VertexAttrib2fv(&self, _cx: *mut JSContext, indx: u32, data: *mut JSObject) {
if let Some(data_vec) = array_buffer_view_to_vec_checked::<f32>(data) {
assert!(!data.is_null());
if let Some(data_vec) = unsafe { array_buffer_view_to_vec_checked::<f32>(data) } {
if data_vec.len() < 2 {
return self.webgl_error(InvalidOperation);
}
@ -2095,8 +2099,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
#[allow(unsafe_code)]
fn VertexAttrib3fv(&self, _cx: *mut JSContext, indx: u32, data: *mut JSObject) {
if let Some(data_vec) = array_buffer_view_to_vec_checked::<f32>(data) {
assert!(!data.is_null());
if let Some(data_vec) = unsafe { array_buffer_view_to_vec_checked::<f32>(data) } {
if data_vec.len() < 3 {
return self.webgl_error(InvalidOperation);
}
@ -2112,8 +2118,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
#[allow(unsafe_code)]
fn VertexAttrib4fv(&self, _cx: *mut JSContext, indx: u32, data: *mut JSObject) {
if let Some(data_vec) = array_buffer_view_to_vec_checked::<f32>(data) {
assert!(!data.is_null());
if let Some(data_vec) = unsafe { array_buffer_view_to_vec_checked::<f32>(data) } {
if data_vec.len() < 4 {
return self.webgl_error(InvalidOperation);
}
@ -2219,8 +2227,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
let buff = if data.is_null() {
vec![0u8; expected_byte_length as usize]
} else {
array_buffer_view_to_vec::<u8>(data)
.expect("Can't reach here without being an ArrayBufferView!")
unsafe {
array_buffer_view_to_vec::<u8>(data)
.expect("Can't reach here without being an ArrayBufferView!")
}
};
if buff.len() != expected_byte_length as usize {
@ -2312,8 +2322,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
let buff = if data.is_null() {
vec![0u8; expected_byte_length as usize]
} else {
array_buffer_view_to_vec::<u8>(data)
.expect("Can't reach here without being an ArrayBufferView!")
unsafe {
array_buffer_view_to_vec::<u8>(data)
.expect("Can't reach here without being an ArrayBufferView!")
}
};
if expected_byte_length != 0 &&