diff --git a/src/gl_fns.rs b/src/gl_fns.rs index 78f86c1..7c56330 100644 --- a/src/gl_fns.rs +++ b/src/gl_fns.rs @@ -353,19 +353,13 @@ impl Gl for GlFns { format: GLenum, ty: GLenum, opt_data: Option<&[u8]>) { - match opt_data { - Some(data) => { - unsafe { - self.ffi_gl_.TexImage2D(target, level, internal_format, width, height, border, format, ty, - data.as_ptr() as *const GLvoid); - } - } - None => { - unsafe { - self.ffi_gl_.TexImage2D(target, level, internal_format, width, height, border, format, ty, - ptr::null()); - } - } + let ptr = match opt_data { + Some(data) if !data.is_empty() => data.as_ptr(), + _ => ptr::null(), + }; + unsafe { + self.ffi_gl_.TexImage2D(target, level, internal_format, width, height, border, format, ty, + ptr as *const GLvoid); } } diff --git a/src/gles_fns.rs b/src/gles_fns.rs index f781c22..5bad0ca 100644 --- a/src/gles_fns.rs +++ b/src/gles_fns.rs @@ -331,19 +331,13 @@ impl Gl for GlesFns { format: GLenum, ty: GLenum, opt_data: Option<&[u8]>) { - match opt_data { - Some(data) => { - unsafe { - self.ffi_gl_.TexImage2D(target, level, internal_format, width, height, border, format, ty, - data.as_ptr() as *const GLvoid); - } - } - None => { - unsafe { - self.ffi_gl_.TexImage2D(target, level, internal_format, width, height, border, format, ty, - ptr::null()); - } - } + let ptr = match opt_data { + Some(data) if !data.is_empty() => data.as_ptr(), + _ => ptr::null(), + }; + unsafe { + self.ffi_gl_.TexImage2D(target, level, internal_format, width, height, border, format, ty, + ptr as *const GLvoid); } }