From 6557ee3436789dbaa6222b7782eedd8e1858c5b2 Mon Sep 17 00:00:00 2001 From: lyphyser <98273206+lyphyser@users.noreply.github.com> Date: Thu, 6 Nov 2025 05:19:35 +0100 Subject: [PATCH] Fix DSlice iterators for empty slices --- deptypes/src/slice.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/deptypes/src/slice.rs b/deptypes/src/slice.rs index 421400a..566cbe0 100644 --- a/deptypes/src/slice.rs +++ b/deptypes/src/slice.rs @@ -87,11 +87,21 @@ impl DSlice { } pub fn iter(&self) -> DSliceIter<'_, T, L> { - DSliceIter {ptr: unsafe {NonNull::new_unchecked(&self.1[0] as *const T as *mut T)}, _marker: PhantomData} + let ptr = if core::mem::size_of::() == 0 { + NonNull::dangling() + } else { + unsafe { NonNull::new_unchecked(self as *const _ as *const T as *mut T) } + }; + DSliceIter { ptr, _marker: PhantomData } } pub fn iter_mut(&mut self) -> DSliceIterMut<'_, T, L> { - DSliceIterMut {ptr: unsafe {NonNull::new_unchecked(&self.1[0] as *const T as *mut T)}, _marker: PhantomData} + let ptr = if core::mem::size_of::() == 0 { + NonNull::dangling() + } else { + unsafe { NonNull::new_unchecked(self as *mut _ as *mut T) } + }; + DSliceIterMut { ptr, _marker: PhantomData } } }