madsmtm / objc2

Bindings to Apple's frameworks in Rust
https://docs.rs/objc2/
MIT License
290 stars 35 forks source link

Work towards removing `malloc_buf` #547

Closed madsmtm closed 5 months ago

madsmtm commented 5 months ago

malloc_buf is unmaintained and unsound, and may be marked as such in the Rustsec Advisory Database in the future, which would be bad for our users; so we should really migrate to something else.

The alternatives mbox, malloced and malloc-array are either also unsound (usually failing to handle 0-length arrays properly), or not popular/maintained enough for me to be comfortable with them as a dependency.

So let's just roll our own implementation, it's not really that complex anyhow (since we don't handle allocation, only deallocation), and we should be able to swap it out with Box<_, MallocAllocator> in the future.

Part of https://github.com/madsmtm/objc2/issues/500.

madsmtm commented 5 months ago

Note that this added objc_sys::free, to avoid the dependency on libc. I did first investigate if System.dealloc could be used for this, since that calls libc::free internally, but you probably can't rely on that.