Skip to content

Commit

Permalink
Require matching data types in MDArray::read_into_slice
Browse files Browse the repository at this point in the history
  • Loading branch information
lnicola committed Sep 2, 2022
1 parent cb0ba5d commit c01052a
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/raster/mdarray.rs
Expand Up @@ -162,6 +162,16 @@ impl<'a> MDArray<'a> {
let rv = unsafe {
let data_type = GDALMDArrayGetDataType(self.c_mdarray);

// HACK: this is too strict, but see https://github.com/georust/gdal/issues/290
if !self.datatype().class().is_numeric()
|| self.datatype().numeric_datatype() != T::gdal_type()
{
return Err(GdalError::UnsupportedMdDataType {
data_type: self.datatype().class(),
method_name: "GDALMDArrayRead",
});
}

let rv = gdal_sys::GDALMDArrayRead(
self.c_mdarray,
array_start_index.as_ptr(),
Expand Down Expand Up @@ -920,6 +930,8 @@ mod tests {
let values = md_array.read_as::<u8>(vec![0, 0], vec![20, 20]).unwrap();

assert_eq!(&values[..4], &[181, 181, 156, 148]);

assert!(md_array.read_as::<u16>(vec![0, 0], vec![20, 20]).is_err());
}

#[test]
Expand Down

0 comments on commit c01052a

Please sign in to comment.