From @chorman0773 https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/CStr.20as.20thin.20pointer/near/405432566
Passing an &UnsafeCell<CStr> to size_of_val is currently sound because it just returns the length parameter of the fat pointer. After making CStr thin however, size_of_val will need to call strlen on the data. This is not ok in a &UnsafeCell because another context could be writing the data, e.g. temporarily overwriting the \0.
This seems like something we may be able to emit a warning for?
Thin cstr: #59905
@rustbot label +T-libs +T-compiler +A-diagnostics
From @chorman0773 https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/CStr.20as.20thin.20pointer/near/405432566
Passing an
&UnsafeCell<CStr>tosize_of_valis currently sound because it just returns the length parameter of the fat pointer. After makingCStrthin however,size_of_valwill need to callstrlenon the data. This is not ok in a&UnsafeCellbecause another context could be writing the data, e.g. temporarily overwriting the\0.This seems like something we may be able to emit a warning for?
Thin cstr: #59905
@rustbot label +T-libs +T-compiler +A-diagnostics