Skip to content

Commit 2fdbdae

Browse files
committed
Avoid potential overflow in vvd writer
1 parent 79cbf89 commit 2fdbdae

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

palace-core/src/vec.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,14 @@ impl<D: DynDimension> Vector<D, u32> {
766766
self.iter().map(|v| *v as usize).sum()
767767
}
768768
}
769+
impl<D: DynDimension> Vector<D, usize> {
770+
pub fn hmul(&self) -> usize {
771+
self.iter().product()
772+
}
773+
pub fn hadd(&self) -> usize {
774+
self.iter().sum()
775+
}
776+
}
769777

770778
//impl<D: Dimension, T: CoordinateType> Vector<D, Coordinate<T>> {
771779
// pub fn to_ndarray_dim(self) -> D::NDArrayDim {

palace-vvd/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,8 +351,8 @@ pub async fn save_embedded_tensor<'cref, 'inv>(
351351
.then_req(ctx, |(chunk_handle, chunk_id)| {
352352
let chunk_info = md.chunk_info(chunk_id);
353353

354-
let begin = chunk_info.begin();
355-
let start_offset = (*begin * stride).hadd();
354+
let begin = chunk_info.begin().map(|v| v.raw as usize);
355+
let start_offset = (begin * stride).hadd();
356356

357357
let start_ptr =
358358
unsafe { out_file_ptr.offset(start_offset.try_into().unwrap()) };

0 commit comments

Comments
 (0)