Skip to content

Commit 485020b

Browse files
committed
glib: Null-terminate on every iteration in PtrSlice::extend_from_slice
We need to ensure that `self` is null-terminated even if writing the previous items panics.
1 parent 29fbcce commit 485020b

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

glib/src/collections/ptr_slice.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -796,12 +796,14 @@ impl<T: TransparentPtrType> PtrSlice<T> {
796796
for item in other {
797797
ptr::write(self.ptr.as_ptr().add(self.len) as *mut T, item.clone());
798798
self.len += 1;
799-
}
800799

801-
ptr::write(
802-
self.ptr.as_ptr().add(self.len),
803-
Ptr::from(ptr::null_mut::<<T as GlibPtrDefault>::GlibType>()),
804-
);
800+
// Add null terminator on every iteration because `clone`
801+
// may panic
802+
ptr::write(
803+
self.ptr.as_ptr().add(self.len),
804+
Ptr::from(ptr::null_mut::<<T as GlibPtrDefault>::GlibType>()),
805+
);
806+
}
805807
}
806808
}
807809

0 commit comments

Comments
 (0)